Content scripts — это скрипты, которые внедряются в веб-страницы и взаимодействуют с их содержимым. В контексте Quasar Framework они используются преимущественно при разработке расширений браузера на базе Vue.js, позволяя интегрировать функционал приложения непосредственно в DOM сторонних страниц.
Ключевые особенности:
window объекты или
<script> теги.В Quasar проекте content scripts настраиваются через конфигурацию
quasar.config.js, чаще всего в разделе
build или при использовании плагинов для расширений
браузеров.
Пример настройки для Chrome Extension:
// quasar.config.js
module.exports = {
build: {
extendWebpack(cfg) {
cfg.entry['content-script'] = './src-content-scripts/content-script.js';
}
}
}
Особенности:
manifest.json).Content script может динамически создавать Vue компоненты и рендерить
их прямо на странице. Для этого используется обычный механизм
createApp:
import { createApp } from 'vue';
import MyWidget from '../components/MyWidget.vue';
const mountPoint = document.createElement('div');
mountPoint.id = 'my-widget-container';
document.body.appendChild(mountPoint);
createApp(MyWidget).mount('#my-widget-container');
Важные моменты:
createApp с
use(Quasar, { plugins: [...] }).Пример с Quasar:
import { createApp } from 'vue';
import { Quasar } from 'quasar';
import MyWidget from '../components/MyWidget.vue';
import 'quasar/dist/quasar.css';
const mountPoint = document.createElement('div');
mountPoint.id = 'quasar-widget';
document.body.appendChild(mountPoint);
createApp(MyWidget).use(Quasar, { plugins: {} }).mount('#quasar-widget');
Content scripts часто обмениваются данными с background scripts расширений. В Quasar это осуществляется через стандартные методы Chrome API:
// Отправка сообщения в background script
chrome.runtime.sendMessage({ action: 'getData' }, (response) => {
console.log(response.data);
});
// Получение сообщений от background script
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
if(request.action === 'updateWidget') {
// обновляем контент Vue компонента
}
});
Особенности:
Content scripts требуют аккуратного обращения со стилями, чтобы не ломать внешний вид страницы:
<style> теги через JS и добавлять их в
<head>:const style = document.createElement('style');
style.textContent = `
#my-widget-container {
position: fixed;
bottom: 20px;
right: 20px;
z-index: 9999;
}
`;
document.head.appendChild(style);
Content scripts могут значительно нагружать страницу при неправильной реализации. Рекомендуется:
requestAnimationFrame для плавного
обновления UI.Использование content scripts в Quasar позволяет создавать расширения и виджеты, которые гармонично интегрируются в страницы сторонних сайтов, обеспечивая как визуальный контроль через Vue и Quasar UI, так и безопасное взаимодействие с фоновыми процессами расширения.