Ber*_*rgi 5 html javascript frames frameset script-tag
通常我们将JavaScript <script>标记放在HTML文档的底部,就在结束</body>标记之前,这样做的好处是它们在DOM中已经可用的所有元素之后执行,还有更多的东西.
但是,我使用的是框架文档 1,<frameset>而不是<body>标签.我不想把它们放在<head>文档中,因为它们不能立即访问3以下的DOM元素.而且我不想<iframe>在标准身体标签中使用s 4.我试过了
<head>
<title>Framesets are interesting</title>
</head>
<frameset cols="50%,50%">
<frame id="frame-a" src="a.html">
<frame id="frame-b" src="b.html">
<script type="text/javascript">
console.log("hello world!");
console.log(document.getElementById("frame-a")); // this is what I'm after
</script>
</frameset>
Run Code Online (Sandbox Code Playgroud)
但是,脚本根本没有执行,甚至没有出现在DOM检查器中.当然,一个<frameset>可能只包含<frame>和<noframes>标签.但是,在<frame>标签之后真的没有办法让脚本执行吗?
仅供参考,将它们放置在</frameset> 有时用<body>s 完成后也不起作用.
1:是的,我知道他们已被弃用了.它们只是我项目的自然选择2,一个简洁的并排视图,显示两个文档并以复杂的方式将它们滚动在一起.
2:......之前我从未使用过它们,所以我想尝试一下.
3:这就是我最终的结果,毕竟一个onload处理程序是微不足道的.问题仍然存在,我很好奇.
4:工作正常,但需要复杂的CSS样式
甲<script>元件仅可以出现在任何一个<head>元件或<body>元件.它不能作为<frameset>元素的子元素出现; a <frameset>只能包含<frame>元素,<noframes>元素或其他<frameset>元素.查看Transitional DTD:
<!ELEMENT FRAMESET - - ((FRAMESET|FRAME)+ & NOFRAMES?) -- window subdivision-->
Run Code Online (Sandbox Code Playgroud)
通常情况下,浏览器很乐意将元素插入其他不完全无视DTD所说的元素,因为DTD只是一个规则手册,但这并不总是发生(例如,你永远不能放任何其他元素)无论你怎么努力,都将 flow元素转换为HTMLParagraphElement ,因此如果浏览器拒绝在HTMLFrameSetElement中放置HTMLScriptElement,那么这就是原因.
任何变通方法都涉及将一个<script>元素放在框架集的<head>元素中,或者放在其中一个框架中.(您也可以在<script>元素中放置<noframes>元素,因为它<noframes>具有相同的内容模型<body>,但由于显而易见的原因,这不会解决您的问题.)
| 归档时间: |
|
| 查看次数: |
2687 次 |
| 最近记录: |