我正在使用的客户端有一个框架集,如此…
<frameset rows="100,*,0"> <frame name="theFrame" id="theFrame" src="blah.html" > <frame name="theSecondFrame" id="theSecondFrame" src="foo.html" > <frame name="importantFrame" id="importantFrame" src="myFrame.html" > </frameset>
当某个动作发生时,我需要我的框架(当前被隐藏的importantframe)主要接管页面并阻止与其他框架的任何交互。我计划使用jquery块UI插件阻止交互。
问题是我实际上不能更改foo.html或blah.html文件。所以JS代码不能住在那里。我需要做的是在这些框架的上下文中执行我的jquery代码。所以只是重述一下,我需要我的JQuery代码住在myFrame.html,但在其他框架的上下文中执行。我怎样才能做到这一点?希望有意义。
谢谢
CDR
解决方法
jQuery函数,你更常用$调用,接受第二个参数称为上下文,这是“jQuery对象的DOM元素我应该搜索”。大多数时候你省略这个参数,所以上下文默认为当前HTML文档。当您的代码在iframe中执行时,文档默认为iframe的文档。但是你可以轻松地抓取其他框架的文档。
例如,将它放在myFrame.html中,这将从框架中删除blah.html中的所有h1元素。注意$的第二个参数,它是从重要帧中抓取blah帧的表达式:
<html> <head> <script type="text/javascript" src="/javascripts/jquery.js"></script> <script type="text/javascript"> function doIt() { $('h1',window.parent.frames[0].document).remove() } </script> </head> <body> <h1>My Frame</h1> <a href="#" onclick="doIt()">Do It</a> </body> </html>