【问题标题】:How to make my iframe's javascript accessible to other sites?如何让其他网站可以访问我的 iframe 的 javascript?
【发布时间】:2019-12-30 13:02:22
【问题描述】:

我正在制作一个媒体播放器类型的应用程序,其他网站开发人员可以将其嵌入到他们的网站上。我需要为他们提供一组 javascript 函数,他们可以从他们网站的其他部分调用这些函数。我有一个带有外部接口的 swf 文件,因此我需要将它加载到 iframe 中。

如何使 iframe 中的 javascript 可以从外部访问?

我看到了 x-frame-options,但它的 allow-from 指令不适用于 chrome 和 safari。我有哪些选择?

【问题讨论】:

    标签: javascript html iframe cross-domain


    【解决方案1】:

    HTML5 方法是postMessage

    如果你不能依赖它在 HTML5 环境中使用,(a) 真的很可悲,(b) 你可以使用Porthole

    【讨论】:

    • 这看起来像是一个解决方案。我不想依赖 HTML5,因为我的应用程序在没有 Flash 的移动设备上已经失败。在不支持 postMessage 的情况下,你能说出 porthole 是如何在浏览器上工作的吗?
    • Here是详细解释。
    【解决方案2】:

    您似乎想为您的视频播放器(如 youtube)提供嵌入代码 有两种选择,您可以直接向其他网站开发人员提供 I-frame 代码,因此他们只需将代码粘贴到他们的页面中即可,例如

    <iframe width="560" height="315" src="//website.com/videoid={videoid}" frameborder="0" ></iframe>
    

    在 iframe 页面目标中,您可以创建登录名并放置您的视频代码、html 和 javascript..

    另一种选择

    如果您想使用 javascript,他们必须将您的 javascript 包含到他们的页面中,并且在您的 javascript 中,您必须实现登录以使用 javascript 创建 I-frame 并动态提供 iframe src ..

    在这种情况下,您绝对可以使用 javascript 访问您的 I-frame 内容,因为您的 javascript 和 I-frame 属于同一个域,您可以阅读更多关于相同 orign 政策的信息 Same Origin

    编辑: 这里有一些示例代码如何使用 JAVASCRIPT 创建 I-FRAME

    <script type='text/javascript' charset='utf-8'>     
       var iframe = document.createElement('iframe');       
       document.body.appendChild(iframe);
    
       iframe.src = 'URL OF CONTENT YOU WANT TO PROVIDE';       
       iframe.width = 'THE WIDTH YOU WANT';
       iframe.height = 'THE HEIGHT YOU WANT';
    </script>
    

    【讨论】:

    • 我走了第二条路。但是,浏览器不允许脚本从其他域访问 iframe。例如。 window.frames[0].targetfunction() 在控制台中给出安全错误。我在 iframe 中的脚本无法从父窗口访问
    • 如果您的脚本和 iframe 域相同,那么您也可以访问 iframe。回答已编辑
    • 我一开始也是这么想的,但没有成功。脚本的域被认为是嵌入脚本的域而不是脚本的来源。因此,如果 abc.com 嵌入 src="xyz.com/script.js" ,则 scripts.js 的域应为 abc.com 并且它无法从 xyz.com 访问 iframe。
    • hmm 在这里你犯了一个错误,你不需要向其他网站用户提供 javascript 代码.. 如果你的视频服务器是 www.abc.com 然后 &lt;script src='abc.com/js.js' 和iframe 是&lt;iframe src='abc.com\videoid="2" /&gt;
    猜你喜欢
    • 2021-04-01
    • 2017-11-03
    • 1970-01-01
    • 2016-11-27
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2021-01-16
    相关资源
    最近更新 更多