admin管理员组文章数量:1400681
I write jQuery script inside my iframe to hide h1 inside the iframe
<iframe id = "preview" width="800" height="500">
</iframe>
<script>
var H = "<html><head><script>$(\'#hh\').toggle();<";
H+= "/script></head><body><h1 id='hh'>JavaScript</h1></body></html>";
var previewFrame = document.getElementById("preview");
var preview = previewFrame.contentDocument || previewFrame.contentWindow.document;
preview.open();
preview.write(H);
preview.close();
</script>
but,the script can't see the elements inside the iframe. when I moved the element with id='hh' out of the iframe, the script works.
I write jQuery script inside my iframe to hide h1 inside the iframe
<iframe id = "preview" width="800" height="500">
</iframe>
<script>
var H = "<html><head><script>$(\'#hh\').toggle();<";
H+= "/script></head><body><h1 id='hh'>JavaScript</h1></body></html>";
var previewFrame = document.getElementById("preview");
var preview = previewFrame.contentDocument || previewFrame.contentWindow.document;
preview.open();
preview.write(H);
preview.close();
</script>
but,the script can't see the elements inside the iframe. when I moved the element with id='hh' out of the iframe, the script works.
Share Improve this question edited Mar 13, 2019 at 22:45 halfer 20.4k19 gold badges109 silver badges202 bronze badges asked Jun 4, 2014 at 17:45 Muhammad SultanMuhammad Sultan 4735 silver badges19 bronze badges 01 Answer
Reset to default 4It looks like you're trying to use jQuery inside the iframe for the script you're putting in the iframe, but you don't have jQuery in the iframe. The iframe is a whole different execution context. If you want to use jQuery in there, you have to load jQuery in there.
Also, you can't run a script that tries to modify the DOM from the <head>
element. The DOM isn't loaded yet. You have to either move that script after the content in the <body>
(e.g. right before </body>
) or use $(document).ready(...)
to run the script AFTER the DOM is ready.
OK, this is the sum of issues I found:
- You need jQuery in the iframe if you're going to use it there.
- You must use a separate
<script>
tag for loading jQuery. You can't use both a.src
and a inline script in the same tag. - You must use the proper
$(document).ready(function() { your code here})
syntax. - You must break apart the
<script>
and</script>
that is in your JS string so the browser doesn't interpret it like'<scr'
+'ipt>'
.
This works for me:
var H = '<html><body><h1 id="hh">JavaScript</h1>';
H += '<scr' + 'ipt src="//ajax.googleapis./ajax/libs/jquery/1.11.1/jquery.min.js"></scr' + 'ipt>';
H += '<scr' + 'ipt>$(document).ready(function() {';
H += '$("#hh").hide();';
H += '});</scr' + 'ipt>';
H += '</body></html>';
var previewFrame = document.getElementById("preview");
var preview = previewFrame.contentDocument || previewFrame.contentWindow.document;
preview.open();
preview.write(H);
preview.close();
I've broken up your H
variable to make it more readable and easier to spot errors.
Working demo: http://jsfiddle/jfriend00/8L3KT/
FYI, this is the painful way to do this. Creating a full HTML document in JS is easy to make mistakes with.
本文标签: javascriptScript tag inside iframe executes on parent domStack Overflow
版权声明:本文标题:javascript - Script tag inside iframe executes on parent dom - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1744240656a2596771.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论