如何使用iframe关闭Bookmarklet?

时间:2017-01-31 12:34:38

标签: javascript

我为我的网站设计了bookmarklet。因此,使用iframe创建的书签。 iframe和iframe源在脚本中声明。

我已设置关闭按钮,并为我的源页面声明了回调函数,但它不起作用。

单击关闭按钮

显示以下错误。

  

(DOMException:在HTMLButtonElement.onclick(http://localhost:8050))中阻止了一个包含原点" http://localhost:8050/researcher_voice/iframe.html:19:172"的帧来访问一个跨源帧。

小书签:

 <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> 

关闭按钮:

 function closeIframe() {
         var iframe = document.getElementById('id');
         iframe.parentNode.removeChild(iframe);
    }

1 个答案:

答案 0 :(得分:0)

我也遇到了这个问题,就像Pinterest的Pin It一样创建了一个书签。

我可以解决跨域问题的唯一方法是在ifit上的页面和GitHub上的此示例后的父页面之间发布事件:

https://gist.github.com/kn0ll/1020251

我在另一个帖子上发了一个答案: https://stackoverflow.com/a/43030280/3958617

还在另一个帖子上找到了另一个例子: https://stackoverflow.com/a/21882581/3958617

希望它有所帮助!