【问题标题】:Executing parent window JS inside iframe inside Chrome extension在 Chrome 扩展程序内的 iframe 内执行父窗口 JS
【发布时间】:2015-07-15 14:24:56
【问题描述】:

我正在创建一个 chrome 扩展来补充我的 web 应用程序。长话短说,它在内容脚本中创建了一个 iframe,用于托管我之前创建的网站。 iframe 使用 chrome 扩展在本地加载。

它是 iframe 的原因是,与使用浏览器操作制作弹出窗口相反,我试图使其看起来像 gmail 中的面板/模式。这是它的外观示例

现在谈到实际问题,我正在尝试在 iframe 内执行一个操作,该操作在 iframe 的父窗口上运行。例如window.parent.someMethod()。但是,每次我尝试都会收到此错误:

Uncaught DOMException: Blocked a frame with origin 
"chrome-extension://dcihnokebmondckijoccdhbhcpkonfid" from accessing a
cross-origin frame.(anonymous function)

我知道这与 chrome-extensions 中的安全性有关,为了缓解这个问题,我将清单中的 content_security_policy 设置为 script-src 'self' 'unsafe-eval'; object-src 'self';。这并没有解决我的问题。

总结:我正在寻找 chrome 扩展 api 内的解决方案,以允许我的 iframe 访问它的父窗口。

【问题讨论】:

    标签: javascript iframe google-chrome-extension


    【解决方案1】:

    据我所知,你不能。

    您应该改为向选项卡中的内容脚本发送消息,以便为您做一些事情。

    【讨论】:

    • 您好,谢谢您的建议。我在 iframe 中实现了chrome.runtime.sendMessage({greeting: "hello"});,在我的扩展中实现了chrome.runtime.onMessage.addListener( function(request, sender, sendResponse) { console.log(sender.tab ? "from a content script:" + sender.tab.url : "from the extension"); } );。似乎仍然没有任何想法?
    • 谢谢,现在会调查。
    • 我应该使用chrome.tabs.sendMessage()
    • 也许最好单独问一个问题。不过,我建议您尝试自己修复它。
    • 不,这是真的,我陷入了“我不想阅读文档”的心态。哪个不好。感谢您的帮助,您为我指明了正确的方向。
    猜你喜欢
    • 1970-01-01
    • 2012-07-24
    • 1970-01-01
    • 2013-08-17
    • 2013-03-09
    • 1970-01-01
    • 2015-09-19
    • 2016-06-04
    • 2012-05-07
    相关资源
    最近更新 更多