在具有跨域站点但相同位置的 JS 文件的子 iFrame 中调用 Javascript 函数
我正在尝试执行以下操作:
主文档调用 iFrame 中的一个函数,其 URL 来自不同位置,但我尝试调用的 Javascript 函数是从与主文档相同的域加载的文档。
有什么办法可以做到这一点吗?
澄清一下:
- 主文档:http://www.main.com
- iFrame 文档:http://www.example.com
- 我在 iFrame 中调用的 JS 函数是在 http://www.main.com/js/script.js
我正在
Permission denied to access property 'js_function'
做
document.getElementById("iframe").contentWindow.js_function(n)
I am trying to do the following:
Main document calls a function in iFrame whose URL is from a different location but the Javascript function I'm trying to call loaded from the same domain as the main document.
Is there any way to do this?
To clarify:
- Main document: http://www.main.com
- iFrame document: http://www.example.com
- JS function i'm calling in iFrame is at http://www.main.com/js/script.js
I'm getting
Permission denied to access property 'js_function'
When doing
document.getElementById("iframe").contentWindow.js_function(n)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我明白你在做什么。有一个“黑客”利用了两个 iframe(如果我没记错的话)。
该黑客攻击和您在这里提到的黑客攻击都非常晦涩难懂,如果它们被故意锁定,我不会感到惊讶。
我能想到的最佳解决方法是在主窗口(iframe 外部)中加载 js_function() 的代码。
能具体说一下JS代码的作用吗?我也许能提供更好的帮助。
I see what you're doing. There was a "hack" that made use of two iframes (if I remember correctly).
Both that hack and the one you mention here are awfully obscure, and I wouldn't be surprised if they have been locked down knowingly.
The best fix I can think of is to load the code for
js_function()
in the main window (outside of the iframe).Can you be more specific on what the JS code does? I may be able to help better.
使用easyXDM的 RPC功能,它结合了XDM和RPC。
可以在这里看到这样的示例: http://consumer.easyxdm.net/current/示例/methods.html
Use easyXDM's RPC feature, it combines XDM with RPC.
An example of this can be seen here: http://consumer.easyxdm.net/current/example/methods.html
即使脚本托管在
main.com
上,它也是在example.com
的上下文中执行,因此被视为main.com
的一部分。 code>example.com ...因此无法访问main.com
窗口中的变量或函数。您可以使用 各种 跨 域 通信 黑客(或者您可以忽略 IE <8 并使用window.postMessage
本身)。另请参阅:http://stevehanov.ca/blog/index.php?id=109< /a>
Even though the script is hosted on
main.com
it is executed in the context ofexample.com
and therefore is considered to be part ofexample.com
... and therefore has no access to variables or functions in themain.com
window. You can hack around this with various cross domain communication hacks (or you can ignore IE < 8 and usewindow.postMessage
by itself).SEE ALSO: http://stevehanov.ca/blog/index.php?id=109