Я не могу получить доступ к родительскому элементу междоменного внутри моего iframe - PullRequest
1 голос
/ 20 августа 2009

Ниже приведено описание моей очереди:

Я добавил функцию букмарклета на свой сайт. Для этого я предоставил на своем сайте одну ссылку под названием «моя закладка». Поэтому я перетащу эту ссылку в закладку, и она будет добавлена ​​в закладку. Итак, с этого момента, когда я посещаю другой сайт, говорите «yahoo.com»… и мне нравится любой контент этого сайта, поэтому я могу выбрать этот контент и нажать «моя закладка» в закладке, он откроет одну страницу моего сайт как дочерний элемент "yahoo.com".

Для этого я добавил ниже код в javascript. где ifrme src - это URL моего сайта.

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

Вы можете отметить это здесь, я добавил один табличный тег и два тд внутри этого .. Один тд, чтобы показать мою страницу в iframe, и другой тд для кнопки «закрыть» .. который закроет этот открытый ветр из «Yahoo». .com».

Теперь мой вопрос: у меня есть кнопка «закрыть» на моем сайте… щелчок по ней… я хочу закрыть окно… (то же действие, которое выполняет кнопка «закрыть» в вышеупомянутом JavaScript) вызов функции "toggleItem")

Но моя проблема в том, что в моем фрейме я не могу получить доступ к элементу 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>

но по этой закрытой ссылке .. Я получаю сообщение об ошибке javascript "отказано в разрешении на получение свойства window.document" в строке var item = parent.document.getElementById (id);

Есть идеи?

Заранее спасибо.

1 Ответ

2 голосов
/ 20 августа 2009

Это запрещено javascript по соображениям безопасности, и вы не можете его изменить. Вот несколько способов обойти ограничение:

  • Используйте функцию обратного вызова и загрузите данные как JSONP. Это может не подходить для вашего случая.
  • Создайте форму на веб-странице с действием, нацеленным на домен foreight, отправьте ее, получите ответ и удалите форму.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...