使用纯 JavaScript/JQuery 的 iframe 的前后控制
Back and Forward Control for an iframe using pure JavaScript/JQuery
我需要创建一个严格控制的环境来打开某些需要前后导航控件的页面。我在这里四处寻找并找到 this question 并尝试实施它,但我遇到了问题。
我对 HTML 和 Javascript 进行了以下处理,假设它已经设置了样式(重用以前项目的代码),并且 JQuery 已经列在 <head></head>
标签:
<body>
<div id="header">
<div id="shortcutbar">
<a id="backBtn" onclick =="iframeBack();"></a>
<a id="forwardBtn" onclick =="iframeForward();"></a>
</div>
</div>
<div id="displayContainer">
<iframe id="display" src="https://website.goes.here/">
</iframe>
</div>
<script>
function iframeBack() {
$("#display").contentWindow.history.go(-1);
}
function iframeForward() {
$("#display").contentWindow.history.go(1);
}
</script>
</body>
检查控制台,我收到以下错误:Uncaught TypeError: Cannot read property "history" of undefined
它给出了在 HTML 中调用函数的任何行,以及脚本标记中函数本身的行。
我不知道什么不起作用,因为到目前为止我发现的所有内容都指的是我已经输入的内容的一些变体。
jQuery对象没有contentWindow
属性.
您需要基础元素...$("#display")[0].contentWindow
。
话虽如此,如果 iframe 来源与主页不同,您将受到安全限制,无法使用 javascript
访问框架 window
您也可以使用 postMessage 进行安全通信
$("#display").contentWindow.postMessage('back');
window.addEventListener('message', ({ data }) => {
data === "back" && window.history.back()
});
https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage
我需要创建一个严格控制的环境来打开某些需要前后导航控件的页面。我在这里四处寻找并找到 this question 并尝试实施它,但我遇到了问题。
我对 HTML 和 Javascript 进行了以下处理,假设它已经设置了样式(重用以前项目的代码),并且 JQuery 已经列在 <head></head>
标签:
<body>
<div id="header">
<div id="shortcutbar">
<a id="backBtn" onclick =="iframeBack();"></a>
<a id="forwardBtn" onclick =="iframeForward();"></a>
</div>
</div>
<div id="displayContainer">
<iframe id="display" src="https://website.goes.here/">
</iframe>
</div>
<script>
function iframeBack() {
$("#display").contentWindow.history.go(-1);
}
function iframeForward() {
$("#display").contentWindow.history.go(1);
}
</script>
</body>
检查控制台,我收到以下错误:Uncaught TypeError: Cannot read property "history" of undefined
它给出了在 HTML 中调用函数的任何行,以及脚本标记中函数本身的行。
我不知道什么不起作用,因为到目前为止我发现的所有内容都指的是我已经输入的内容的一些变体。
jQuery对象没有contentWindow
属性.
您需要基础元素...$("#display")[0].contentWindow
。
话虽如此,如果 iframe 来源与主页不同,您将受到安全限制,无法使用 javascript
访问框架 window您也可以使用 postMessage 进行安全通信
$("#display").contentWindow.postMessage('back');
window.addEventListener('message', ({ data }) => {
data === "back" && window.history.back()
});
https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage