document.getelementbyid не работает - PullRequest
2 голосов
/ 18 мая 2011

Я хотел скрыть некоторые вещи, обращаясь к iframe, используя javascript, поэтому я написал эту функцию javascript.

function changeCSS(){ 
frame = document.getElementById('frame1'); 
frame.contentWindow.document.getElementById('GlobalTitleAreaImage').style.display='none'; 
}

Затем я вызвал функцию при загрузке iframe (onload = javascript: changecss ())

В IE все работает нормально, но в Safari это не работает. Любые идеи, почему он так себя ведет и как мне это исправить.

Спасибо

Ответы [ 2 ]

1 голос
/ 18 мая 2011

Обратите внимание, что и фрейм, и местоположение самого Javascript должны находиться в одном домене, чтобы это работало.Safari и IE могут обрабатывать его по-разному, если оба они не соответствуют файловому протоколу.

Для тех, кто не находится в одном домене, изучите междоменную связь с фреймами и потенциальный HTML5 решений, красиво обернутых альтернативными методами библиотеками и плагинами, такими как porthole , xssinterface , easyxdm и другими.в списке поддержки контента окна, Chrome нет.Для кроссбраузерной совместимости используйте комбинацию contentWindow и contentDocument, чтобы обеспечить доступ к поддерживаемому свойству.Так что попробуйте:

function changeCSS(){ 
    var frame = document.getElementById('frame1'); 
    var content = frame.contentWindow || frame.contentDocument;
    content.document.getElementById('GlobalTitleAreaImage').style.display='none'; 
}
0 голосов
/ 18 мая 2011

Если iframe не находится в том же домене, вам не разрешено делать это по соображениям безопасности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...