Javascript 如何使用iframe关闭Bookmarklet?
我已经为我的网站设计了bookmarklet。因此,bookmarklet是使用iframe创建的。Iframe和Iframe源在脚本中声明 我已经设置了关闭按钮,并且为我的源页面声明了回调函数,但是它不起作用 单击关闭按钮 显示以下错误 (DomeException:阻止原点为“”的帧访问跨原点帧。位于HTMLButtoneElement.onclick()) 书签:Javascript 如何使用iframe关闭Bookmarklet?,javascript,Javascript,我已经为我的网站设计了bookmarklet。因此,bookmarklet是使用iframe创建的。Iframe和Iframe源在脚本中声明 我已经设置了关闭按钮,并且为我的源页面声明了回调函数,但是它不起作用 单击关闭按钮 显示以下错误 (DomeException:阻止原点为“”的帧访问跨原点帧。位于HTMLButtoneElement.onclick()) 书签: <a class="article-bookmark" href="javascript: (function(){
<a class="article-bookmark" href="javascript: (function(){
var iframeSrc = 'http://localhost:8050/researcher_20voice/iframe.html';
var iframeStyle = 'position: fixed; z-index: 999999; width: 500px; height: 300px; left:300px; right: 0; top: 200px; border: none; overflow: hidden; background-color: black';
var iframe = document.createElement('iframe');
iframe.setAttribute('src', iframeSrc);
iframe.setAttribute('id', 'kew-modal');
iframe.setAttribute('style', iframeStyle);
var body = document.getElementsByTagName('body')[0];
body.appendChild(iframe);
}).call(this);">Bookmarklet</a>
我在创建书签时也遇到了这个问题,就像Pinterest的pinit一样 解决跨域问题的唯一方法是在iframe内的页面和GitHub上的父页面之间发布事件,如下示例所示: 我在另一个帖子上发布了一个答案: 在另一个线程上还发现了一个示例:
希望有帮助 如果内容来自同一来源,您可以-但您需要使用
document.getElementById('kew-modal')
而不是(“id”)-因为它可能不是来自同一来源,您将不被允许,我也使用了document.getElementById('kew-modal'),但它重复了相同的交叉组织错误。因此答案是否定的
function closeIframe() {
var iframe = document.getElementById('id');
iframe.parentNode.removeChild(iframe);
}