【问题标题】:javascript - Can not access cross domain parent element inside my iframejavascript - 无法访问我的 iframe 中的跨域父元素
【发布时间】:2010-11-21 06:26:35
【问题描述】:

以下是我的问题描述:

我已将书签功能添加到我的网站。为此,我在我的站点中提供了一个名为“我的书签”的链接。因此,我将把该链接拖到书签中,并将其添加到书签中。所以,从现在开始,当我访问其他网站时说“yahoo.com”......并且我喜欢该网站的任何内容,因此我可以选择该内容并从书签中单击“我的书签”,它将打开我的一页网站作为“yahoo.com”的子元素。

为此,我在 javascript 中添加了以下代码。 ifrme src 是我网站的网址。

 var div = document.createElement("div");

  div.id = "instacalc_bookmarklet";

  var str = "";
  str += "<table id='instacalc_bookmarklet_table' valign='top' width='570' cellspacing='0' cellpadding='0'><tr><td width ='850' height='880'>";
  str += "<iframe frameborder='2' scrolling='yes' name='instacalc_bookmarklet_iframe' id='instacalc_bookmarklet_iframe' src='" + iframe_url + "' width='850px' height='875px' style='textalign:right; backgroundColor: white;'></iframe>";
  str += "</td><td id='closetd' onClick='toggleItem(\"instacalc_bookmarklet\");' style='background: #FFDDDD;' title='click to close window' valign='top' align='center' width='20px'>";
  str += "<a href='javascript:void(0);' style='width:100%; text-align: middle; color: #FF0000; font-family: Arial;'>x</a>";
  str += "</td></tr></table>";

  div.innerHTML = str;

  div.onkeypress = keyPressHandler;
  document.body.insertBefore(div, document.body.firstChild);

您可以在此处标记,我添加了一个表格标签,并在其中添加了两个 td。一个 td 用于在 iframe 中显示我的页面,另一个 td 用于“关闭”按钮。这将从“yahoo”关闭这个打开的窗口.com”。

现在,我的问题是..我的站点中有“关闭”按钮..点击它...我想关闭窗口..(与上面 javascript 中的“关闭”按钮相同的操作..调用“toggleItem”函数)

但我的问题是……在我的 iframe 中我无法访问 div 元素……

我写过

<a href="#bookmarklet" onclick="closethis();">Close</a>


<script>

    function closethis()
    {

      id='instacalc_bookmarklet';
      var item = parent.document.getElementById(id);
      if(item){
        if ( item.style.display == "none"){
          item.style.display = "";
        }
        else{
          item.style.display = "none";
        } 
      }
    }


</script>

但是单击该关闭链接.. 我在 var item = parent.document.getElementById(id); 行上收到 javascript 错误“permission denied to get property window.document”;

有什么想法吗?

提前致谢。

【问题讨论】:

标签: javascript iframe element parent


【解决方案1】:

出于安全原因,这是 javascript 禁止的,您无法更改它。它们是绕过限制的一些方法:

  • 使用回调函数并将数据加载为 JSONP。这可能不适合您的情况。
  • 在网页中创建一个针对foreight 域的操作的表单,提交它,获取响应然后删除该表单。

【讨论】:

    猜你喜欢
    • 2010-11-20
    • 2011-12-09
    • 2020-05-04
    • 2013-08-03
    • 1970-01-01
    • 2014-01-17
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多