Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 浏览器扩展(CrossRider)iframe原点和父访问_Javascript_Google Chrome_Iframe_Same Origin Policy_Crossrider - Fatal编程技术网

Javascript 浏览器扩展(CrossRider)iframe原点和父访问

Javascript 浏览器扩展(CrossRider)iframe原点和父访问,javascript,google-chrome,iframe,same-origin-policy,crossrider,Javascript,Google Chrome,Iframe,Same Origin Policy,Crossrider,目前我正在与Crossrider一起开发一个扩展。我现在正在使它也在IE和Chrome上工作。扩展将IFrame作为侧栏添加到每个页面,并从IFrame与父窗口交互。为了实现这一点,我使用了Crossriders的“建议”,即为iframe使用数据编码块,而不是URL,以解决相同的域安全问题 这在Firefox中有效(IE中也有一些黑客攻击),但在Chrome中我有以下问题: 阻止原点为“null”的帧访问交叉原点 框架 据我所知,唯一的解决方法是实际位于同一个域(不可能,因为插件适用于每个网站

目前我正在与Crossrider一起开发一个扩展。我现在正在使它也在IE和Chrome上工作。扩展将IFrame作为侧栏添加到每个页面,并从IFrame与父窗口交互。为了实现这一点,我使用了Crossriders的“建议”,即为iframe使用数据编码块,而不是URL,以解决相同的域安全问题

这在Firefox中有效(IE中也有一些黑客攻击),但在Chrome中我有以下问题:

阻止原点为“null”的帧访问交叉原点 框架

据我所知,唯一的解决方法是实际位于同一个域(不可能,因为插件适用于每个网站)或使用跨窗口消息传递(因为我们与家长之间有丰富的交互,这会带来很多开销)。所以我的问题是,我如何配置override或其他什么来修复Chrome的问题,有没有办法?作为一个快速的工作,它甚至可以是一个设置,我必须在铬


但总的来说,我认为应该有办法解决这个问题,因为最终我已经拥有了对浏览器的完全访问权限,因为安装了扩展,所以我认为我应该能够以某种方式覆盖它?

总的来说,iFrame受到浏览器实现的安全策略的保护。因此,在iframe和其父页面上运行的扩展之间进行交互的最简单方法是在它们之间发送消息

您可以通过在IDE中启用(设置>)在Iframes中运行功能来实现这一点,然后在extension.js代码中区分iframe及其父级。以下示例有助于您理解总体思路:

extension.js:

有关示例中使用的方法的更多信息,请参阅和


[披露:我是一名Crossrider员工]

一般来说,iFrame受浏览器实现的安全策略保护。因此,在iframe和其父页面上运行的扩展之间进行交互的最简单方法是在它们之间发送消息

您可以通过在IDE中启用(设置>)在Iframes中运行功能来实现这一点,然后在extension.js代码中区分iframe及其父级。以下示例有助于您理解总体思路:

extension.js:

有关示例中使用的方法的更多信息,请参阅和


[披露:我是一名Crossrider员工]

一般来说,iFrame受浏览器实现的安全策略保护。因此,在iframe和其父页面上运行的扩展之间进行交互的最简单方法是在它们之间发送消息

您可以通过在IDE中启用(设置>)在Iframes中运行功能来实现这一点,然后在extension.js代码中区分iframe及其父级。以下示例有助于您理解总体思路:

extension.js:

有关示例中使用的方法的更多信息,请参阅和


[披露:我是一名Crossrider员工]

一般来说,iFrame受浏览器实现的安全策略保护。因此,在iframe和其父页面上运行的扩展之间进行交互的最简单方法是在它们之间发送消息

您可以通过在IDE中启用(设置>)在Iframes中运行功能来实现这一点,然后在extension.js代码中区分iframe及其父级。以下示例有助于您理解总体思路:

extension.js:

有关示例中使用的方法的更多信息,请参阅和


[披露:我是一名Crossrider员工]

您可以使用对象URL作为iframe src。它们被视为与创建页面相同的原点。

您可以使用对象URL作为iframe src。它们被视为与创建页面相同的原点。

您可以使用对象URL作为iframe src。它们被视为与创建页面相同的原点。

您可以使用对象URL作为iframe src。它们被视为与创建页面相同的原点。

尝试将其用于iframesrc@Bnaya谢谢,效果很好,你想把它作为答案发布吗?试着在你的iframe中使用src@Bnaya谢谢,效果很好,你想把它作为答案发布吗?试着在你的iframe中使用src@Bnaya谢谢,效果很好,您想将其作为答案发布?请尝试将其用于iframesrc@Bnaya谢谢,效果很好,你想把它作为答案吗?谢谢,我想到了这个,但这对我们来说将是一件痛苦的事情,因为我们必须开发自己的协议来促进我们现在正在通过jQuery从iFrame到父窗口进行的相当复杂的交互。这可能是一个很好的可重用组件,但解决方案C=)谢谢,我想到了这一点,但这对我们来说是一个麻烦,因为我们必须开发自己的协议,以促进我们现在正在通过jQuery从iFrame到父窗口进行的相当复杂的交互。这可能是一个很好的可重用组件,但解决方案C=)谢谢,我想到了这一点,但这对我们来说是一个麻烦,因为我们必须开发自己的协议,以促进我们现在正在通过jQuery从iFrame到父窗口进行的相当复杂的交互。这可能是一个很好的可重用组件,但解决方案C=)谢谢,我想到了这一点,但这对我们来说是一个麻烦,因为我们必须开发自己的协议,以促进我们现在正在通过jQuery从iFrame到父窗口进行的相当复杂的交互。这可能是一个很好的可重用组件,但解决方案C=)
appAPI.ready(function($) {
  if (appAPI.dom.isIframe()) {
    // iframe code
    appAPI.message.addListener(function(msg) {
      if (msg.action === 'someAction') {
        ...
        // send response
        appAPI.message.toCurrentTabWindow({
          action:'otherAction',
          response:'otherResponse'
        });
      }
    });
    // end iframe code
    return;
  }
  // Parent window code
  appAPI.message.addListener(function(msg) {
    if (msg.action === 'otherAction') {
      ...
      // send response
      appAPI.message.toCurrentTabIframes({
        action:'someAction',
        response:'someResponse'
      });
    }
  });
});