Chr*_*lli 39 html jquery frames
我正在使用的客户端有一个像这样的框架集......
<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>
Run Code Online (Sandbox Code Playgroud)
当某个动作发生时,我需要我的框架(当前隐藏的重要框架)主要接管页面并阻止与其他框架的任何交互.我正计划使用jquery块UI插件阻止交互.
问题是我实际上无法更改foo.html或blah.html文件.所以JS代码不能存在.我需要做的是在这些帧的上下文中执行我的jquery代码.所以回顾一下,我需要将我的JQuery代码放在myFrame.html中,但是在其他框架的上下文中执行.我怎样才能做到这一点?希望有道理.
谢谢CDR
pjb*_*jb3 81
jQuery
你通常调用的函数$
接受一个名为context的第二个参数,即"我应该在哪个jQuery对象的DOM元素中进行搜索".大多数情况下,您省略了此参数,因此上下文默认为当前HTML文档.当您的代码在iframe中执行时,文档默认为iframe的文档.但您可以轻松地抓取其他框架之一的文档.
例如,将其放入myFrame.html
,这将从框架中删除所有h1元素blah.html
.注意第二个参数$
,它是从重要框架内抓取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>
Run Code Online (Sandbox Code Playgroud)
我不确定块插件,但是您不能获取相关框架并使用“框架树”操作它,如下所示:(来自 importantFrame.htm 内)
parent.theFrame.someProperty = someValue;
Run Code Online (Sandbox Code Playgroud)
例如:
parent.theFrame.location.href='anotherPage.html';
Run Code Online (Sandbox Code Playgroud)
根据我所读到的内容,您可能需要在目标页面上使用 Jquery,但您可以尝试以下操作:
parent.theFrame.block();
Run Code Online (Sandbox Code Playgroud)
或者可能:
$('#theFrame').block();
Run Code Online (Sandbox Code Playgroud)