2009-08-20 8 views
1

Ниже описание моего дия:Javascript - не удается получить доступ к перекрестному домену родительского элемента внутри моего фрейма

Я добавил букмарклет функции на мой сайт. Для этого я предоставил одну ссылку под названием «Моя закладка» на моем сайте. Итак, я перетащил эту ссылку на закладку, и она будет добавлена ​​в закладки. Итак, теперь, когда я посещаю другой сайт, скажите «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); 

Вы можете отметить, что здесь, я добавил один тег таблицы, и два тд внутри этого .. One т.д, чтобы показать мою страницу в IFRAME и еще тд для кнопки «закрыто» .. который закроет этот открыт windown от "yahoo.com".

Теперь, мой вопрос: у меня есть кнопка «закрыть» на моем сайте .. onclick этого ... Я хочу закрыть окно .. (то же действие, которое «закрывает» кнопку в над 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> 

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

Любые идеи?

Спасибо заранее.

+0

Вы должны проверить ответ на этот пост http://stackoverflow.com/a/19332928/532116 – Gilbou

ответ

2

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

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