2

現在、ユーザーが拡張機能のアイコンをクリックすると、基本的に現在のページに iframe を挿入する Firefox 拡張機能を開発しています。iframe コードを挿入することができました。src 属性を html ファイルにリンクする方法を見つけました。

クロムバージョンでは、私は単に

 var main_html = chrome.extension.getURL('main.html');

そして、次のように iframe の src 属性へのリンクを渡します。

 iframe.setAttribute("src",main_html);

したがって、main_html は resource://idofmyextension/content/data/main.html のようなリンクです

しかし、私が疑ったように、現在の URL にあるコンテンツはデータを読み込めない、または main.html ファイルへのリンクを確立できないというセキュリティ エラーが表示されます。

このセキュリティ制限を通過する方法はありますか? または、html ファイルを iframe にロードする別の方法はありますか?

前もって感謝します。

4

1 に答える 1

3

Firefox での通常の XUL 開発よりも、Google Chrome 拡張機能の開発に似たAddon SDKの使用を想定しています。ただし、ここで説明しているアプローチは、アドオン SDK がなくても機能します。

アドオン SDK では現在のところ使用できませんが、いくつかの機能があります。Bug 820213を参照してください。

現時点で頭に浮かぶ唯一の回避策は、data:url を使用することです。したがって、代わりに次のようにします。

const { data } = require("self");

let url = data.url("main.html");

// pass the url to the iframe

あなたが持っているでしょう:

const { data } = require("self");

let content = encodeURIComponent(data.load("main.html"));
let url = "data:text/html;charset=utf-8," + content;

// pass the url to the iframe

data.loadの代わりに注意してdata.urlください: 基本的にリソースのコンテンツをロードし、それをデータ URL として使用します。それは醜いですが、少なくとも適切な修正が行われるまで、場合によっては使用できます。

それが役に立てば幸い!

于 2012-12-12T02:54:24.520 に答える