シンプルな機能: ブラウザの右上隅にあるプラグイン アイコンをクリックすると小さなポップアップ ウィンドウがポップアップし、設定をクリックすると設定ページがポップアップし、背景画像や色を置き換えることができます。 始める1. ローカルにtestPluginフォルダを作成し、新しいmanifest.jsonファイルを作成します。 { "名前": "テストプラグイン", "description": "これはテストケースです", "バージョン": "0.0.1", 「マニフェストバージョン」: 2 } 2. プラグインの小さなアイコンを追加する testPlugin の下に icons フォルダーを作成し、そこにさまざまなサイズのアイコンをいくつか配置します。テストの場合は、面倒でも 1 つのサイズのアイコンだけを配置できます。 manifest.json を次のように変更します。 { "名前": "テストプラグイン", "description": "これはテストケースです", "バージョン": "0.0.1", "マニフェストバージョン": 2, 「アイコン」: { "16": "アイコン/16.png", "48": "アイコン/16.png" } } このとき、拡張機能で解凍したプログラム(作成したフォルダ)を読み込むと、プロトタイプが表示されます。 3. プラグインアイコンをクリックして、ブラウザの右上隅にポップアップ表示されるボックスを選択して追加します。 「ブラウザアクション」: { "default_title": "テストプラグイン", "default_icon": "icons/16.png", "default_popup": "index.html" } testPlugin は index.html ファイルを作成します。 <!DOCTYPE html> <html lang="ja"> <ヘッド> <メタ文字セット="UTF-8"> <meta name="viewport" content="width=デバイス幅、初期スケール=1.0"> <title>テストプラグイン</title> </head> <本文> <input id="name" placeholder="入力してください"/> </本文> </html> プラグインを更新します。このとき、ブラウザに追加したプラグインのアイコンをクリックすると、ポップアップが表示されます。 4.js イベント (スタイルも同様) document.getElementById('button').onclick = function() { アラート(document.getElementById('name').value) } HTMLの場合: <input id="name" placeholder="入力してください"/> <input id="button" type="button" value="click"/> <script src="js/index.js"></script> プラグインを更新します。ブラウザで追加したプラグインのアイコンをクリックすると、入力ボックスに値が表示されます。 ウェブページに埋め込まれたフローティングボックス上記の例は、アイコンをクリックするとブラウザの右上隅に表示される小さなポップアップ ウィンドウです。 vue.jsとelement-uiの紹介 vue.jsとelement-uiプラグインの適切なバージョンをダウンロードし、index.jsと同様に導入します。別途jsファイルをダウンロードするアドレスがない場合は、CDNアドレスを開いて圧縮されたコードを直接コピーすることもできます。 manifest.json に追加: 「コンテンツスクリプト」: [ { 「一致する」: [ 「<すべてのURL>」 ]、 "css": [ 「css/index.css」 ]、 "js": [ "js/vue.js", "js/element.js", "js/index.js" ]、 "run_at": "ドキュメントアイドル" } ]、 index.js ファイル内: ここではプラグインパッケージのサイズを小さくするために、element-ui の CSS を導入するリンクを head 内に挿入する方法を使います。もちろん index.js を導入するのと同じように manifest.json 内に導入することもできます。 Vue インスタンスを index.js ファイルに直接記述しますが、まずインスタンスをマウントするためのノードを作成します。 要素を document.createElement('div') にします。 attr = document.createAttribute('id') とします。 attr.value = 'appPlugin' 要素.setAttributeNode(属性) document.getElementsByTagName('body')[0].appendChild(要素) link = document.createElement('link') とします。 linkAttr = document.createAttribute('rel') とします。 linkAttr.value = 'スタイルシート' linkHref = document.createAttribute('href') とします。 linkHref.value = 'https://unpkg.com/element-ui/lib/theme-chalk/index.css' リンク属性を設定する リンク.setAttributeNode(linkHref) document.getElementsByTagName('head')[0].appendChild(リンク) 定数vue = 新しいVue({ el: '#appPlugin', テンプレート:` <div class="app-plugin-content">{{text}}{{icon_post_message}><el-button @click="Button">ボタン</el-button></div> `、 データ: 関数 () { 戻り値: { text: 'hhhhhh', icon_post_message: '_icon_post_message', isOcContentPopShow: true } }, マウント() { console.log(このテキスト) }, メソッド: { ボタン() { this.isOcContentPopShow = false } } }) ウェブページの背景色を置き換える簡単なツールを書いてみましょうインデックス: 要素を document.createElement('div') にします。 attr = document.createAttribute('id') とします。 attr.value = 'appPlugin' 要素.setAttributeNode(属性) document.getElementsByTagName('body')[0].appendChild(要素) link = document.createElement('link') とします。 linkAttr = document.createAttribute('rel') とします。 linkAttr.value = 'スタイルシート' linkHref = document.createAttribute('href') とします。 linkHref.value = 'https://unpkg.com/element-ui/lib/theme-chalk/index.css' リンク属性を設定する リンク.setAttributeNode(linkHref) document.getElementsByTagName('head')[0].appendChild(リンク) const vue = 新しい Vue({ el: '#appPlugin', テンプレート: ` <div v-if="isOcContentPopShow" class="oc-move-page" id="oc_content_page"> <div class="oc-content-title" id="oc_content_title">色<el-button type="text" icon="el-icon-close" @click="close"></el-button></div> <div class="app-plugin-content">背景: <el-color-picker v-model="color1"></el-color-picker></div> <div class="app-plugin-content">フォント: <el-color-picker v-model="color2"></el-color-picker></div> </div> `、 データ: 関数 () { 戻り値: color1: null、color2: null、documentArr: []、textArr: []、isOcContentPopShow: true } }, 時計: 色1(値) { 出力 = document.getElementById('oc_content_page') C = document.getElementsByClassName('el-color-picker__panel') とします。 this.documentArr.forEach(item => { if(!out.contains(item) && !outC[0].contains(item) && !outC[1].contains(item)) { item.style.cssText = `背景色: ${val}!important;色: ${this.color2}!important;` } }) }, color2(値) { 出力 = document.getElementById('oc_content_page') C = document.getElementsByClassName('el-color-picker__panel')[1] を出力します。 this.textArr.forEach(item => { if(!out.contains(item) && !outC.contains(item)) { item.style.cssText = `color: ${val}!important;` } }) } }, マウント() { chrome.runtime.onConnect.addListener((res) => { res.name === 'testPlugin'の場合{ res.onMessage.addListener(mess => { this.isOcContentPopShow = mess.isShow }) } }) this.$nextTick(() => { bodys = [...document.getElementsByTagName('body')] とします。 ヘッダーを [...document.getElementsByTagName('header')] とします。 divs = [...document.getElementsByTagName('div')] とします。 lis = [...document.getElementsByTagName('li')] とします。 articles = [...document.getElementsByTagName('article')] とします。 asides = [...document.getElementsByTagName('aside')] とします。 フッターを [...document.getElementsByTagName('footer')] とします。 navs = [...document.getElementsByTagName('nav')] とします。 this.documentArr = bodies.concat(ヘッダー、div、lis、記事、asides、footers、navs) = [...document.getElementsByTagName('a')] とします ps = [...document.getElementsByTagName('p')] とします。 this.textArr = as.concat(ps) }) }, メソッド: { 近い() { this.isOcContentPopShow = false } } }) インデックス.html: <!DOCTYPE html> <html lang="ja"> <ヘッド> <メタ文字セット="UTF-8"> <meta name="viewport" content="width=デバイス幅、初期スケール=1.0"> <title>私のプラグイン</title> <link rel="スタイルシート" href="css/index.css"> </head> <本文> <div class="plugin"> <input id="plugin_button" type="button" value="開く" /> </div> </本文> <script src="js/icon.js"></script> </html> icon.js を作成します。 plugin_button.onclick = 関数(){ 混乱() } 非同期関数mess(){ const tabId = getCurrentTabId() を待つ const connect = chrome.tabs.connect(tabId, {name: 'testPlugin'}); connect.postMessage({isShow: true}) } 関数 getCurrentTabId() { 新しい Promise を返します ((resolve, reject) => { chrome.tabs.query({ active: true, currentWindow: true }, 関数(tabs) { 解決(タブの長さ?タブ[0].id: null) }); }) } この小さな試みはこれで完了です。もちろん、さらに要件がある場合は、ローカル ストレージまたはサーバーと連携できます。 要約するvue+element を使用した Google プラグインの開発に関するこの記事はこれで終わりです。vue+element プラグイン開発に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: WindowsX Hyper-V ベースの CentOS システムをインストールする
>>: MySQL 8.0 Windows zip パッケージ版の詳細なインストール手順
セルのパディングは、セルの内容と境界線の間の距離です。基本的な構文<TABLE セルパディング...
最近はMySQLのパフォーマンス最適化についても研究しているので、今日の投稿は勉強ノートとしても使え...
表ラベルの構成HTML 内の表は <table> タグで構成されており、ブラウザはタグを...
手順: 1. MySQLデータベースをインストールする1. MySQL-5.6.17-winx64....
Windows Server 2008 サーバーが自動的に再起動します。サーバーにログインした後、ど...
まず、いくつかの概念を明確にします。 JDBC: Javaデータベース接続、Oricalによって規定...
仮想マシンの IP アドレスを変更します。 次のインターフェイスに入り、サブネット IP を直接変更...
序文Web ページを作成するときに、次のような状況に遭遇することはよくあります。 <本文>...
目次1. 簡単な紹介2. 間隔を設定する2.1 説明2.2 パラメータ2.3 戻り値2.4 使用法3...
必要ページング バーを追加します。これにより、ページにジャンプしたり、ページ番号に従って特定のページ...
目次序文Dockerfile の紹介Dockerfileはイメージプロセスを構築するDockerfi...
序文Vue Router は、Vue.js の公式ルーティング マネージャーです。 Vue.js の...
1. MySQLをインストールします。対応するソフトウェアをインストールするには、次の 3 つのコマ...
MERGE ストレージ エンジンは、MyISAM テーブルのグループを論理ユニットとして扱い、同時に...
1. /etc/init.dディレクトリに新しいrabbitmqを作成します。 [root@loca...