iframe 中包含的 JS 具有顶部框架窗口的上下文

发布于 2024-11-04 23:22:05 字数 852 浏览 4 评论 0原文

$('<script/>', {
    src: '/path/to/javascript.js',
    type: 'text/javascript'
}).appendTo($('#iframe').contents().find('body'));

如果我错了,请纠正我,但我认为应该将 JS 加载到 iframe 中。我还尝试附加到head

问题
javascript.js 被执行,但该脚本中的 console.debug(this) 会返回顶部框架窗口。我试图验证该脚本是否确实包含在 iframe 中,但不知道如何验证。

firebug output

此外,从 javascript.js< 运行 $('a') /code> 返回顶部框架中的所有链接,而不是我想要的 iframe 中的每个链接。

感谢您抽出时间!


更新:我整理了一个独立的测试用例< /a> 您也可以下载 。检查控制台,注意这是顶部框架(可以通过变量 _TOP 进行验证)。

$('<script/>', {
    src: '/path/to/javascript.js',
    type: 'text/javascript'
}).appendTo($('#iframe').contents().find('body'));

Correct me if I'm wrong, but I think that should load the JS into the iframe. I've also tried appending to head.

The problem
javascript.js is executed, but console.debug(this) in that script returns the top frame window. I've tried to verify that the script is actually included in the iframe, but don't really know how.

firebug output

Additionally, running $('a') from javascript.js returns all links in the top frame, not every link in the iframe which I'd like.

Thanks for your time!


Update: I've put together an isolated test case which you also can download. Check the console and note that this is the top frame (can be verified by the variable _TOP).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

我恋#小黄人 2024-11-11 23:22:05

这是一个灰色地带。对于使用 jQuery 的此特定操作,在幕后您将使用 importNodeadoptNode,具体取决于浏览器。然而,IE 也不支持(因为我上次研究过)。

您可能想要获取该文档的参考并编写脚本。如果我没记错的话:

$('<iframe/>')[0].contentDocument.document.write('script');

This is kind of a grey area. For this specific action using jQuery, under the hood you're using importNode or adoptNode depending on the browser. However, IE won't support either (since I last researched it).

You might want to get a reference to the document, and write the script. If memory serves me right:

$('<iframe/>')[0].contentDocument.document.write('script');
你的往事 2024-11-11 23:22:05

我能够在同一域 iframe 更新中进行一些操作:
http://jsfiddle.net/maniator/DX6bg/1/

确保这两个 URL位于同一域中。
(包括 from 中是否有 www

更新

您可以像这样测试它:

$(function(){
   var iframe = $('#iframe').contents();

   $('body', iframe).append($('<div>', {text: 'this is a test'}));
});

现在,如果您看到文本 this is a test 在 iframe 中你知道它正在工作

I was able to make something in the same domain iframe update:
http://jsfiddle.net/maniator/DX6bg/1/

Make sure that the two URLs are in the same domain.
(including if there is a www in from or not)

UPDATE

You can test it like this:

$(function(){
   var iframe = $('#iframe').contents();

   $('body', iframe).append($('<div>', {text: 'this is a test'}));
});

now if you see the text this is a test in the iframe you know it is working

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文