5

Chrome 拡張フォルダーに iframe.html ページがあります。そして、私はそれを私の現在のウェブページに表示したい. ここに問題があります.iframeのボタンをクリックしたときにiframeを閉じるにはどうすればよいですか? 私は次のようなコードで試しました:

window.parent.iframe.hide()

しかし、それはエラーで動作しません:

Unsafe JavaScript attempt to access frame with URL

しかし、私はevernoteのソースファイルをはっきりと読みました。次のようなコードがあります

window.parent.$readable.hide()

evernote の拡張機能は機能するのに、私の拡張機能にエラーが表示されるのはなぜですか? ここで私のmanifest.jsonですべきことはありますか? これが私のマニフェストファイルです。

{
  "name": "Reader",
  "version": "1.0",
  "manifest_version": 2,
  "description": "A great start!",
  "browser_action": {
    "default_icon": "icon.png"
  },
  "background": {"scripts": ["background.js"]},
  "permissions": [
    "tabs", "<all_urls>"
  ],
  "web_accessible_resources": [
    "iframe/index.html"
  ]
}
4

1 に答える 1

0

Evernoteについては詳しく調べていませんが、可能性があります。Evernoteが、追加するパーミッション属性を指定している可能性があります<iframe>sandboxMDNの属性の説明を見てください:

属性の値は、特定の制限を解除するトークンのスペース区切りのリストにすることができます。有効なトークンは次のとおりです。

allow-same-origin:コンテンツを、含まれているドキュメントと同じオリジンからのものとして扱うことができます。このキーワードが使用されていない場合、埋め込まれたコンテンツは一意のオリジンからのものとして扱われます。

..。

allow-scripts:埋め込みブラウジングコンテキストでスクリプトを実行できるようにします(ただし、ポップアップウィンドウは作成できません)。このキーワードを使用しない場合、この操作は許可されません。

したがって、コンテンツスクリプトがiframeをページに追加するsandboxときに、元の場所やスクリプトの制限を緩和するプロパティを追加するようにします。

<iframe src="chrome-extension://abcdefghijk/iframe/index.html" sandbox="allow-same-origin">

別の権限を追加してみてsandbox、それで修正されるかどうかを確認してください。私はこの問題を解決できるallow-same-originと確信しています。allow-scripts

于 2012-07-27T05:20:18.377 に答える