JQuery междоменный сценарий iframe - PullRequest
16 голосов
/ 21 июня 2010

Я пытаюсь получить доступ к DOM iframe, который загружает внешний URL.Конечно, я получаю сообщение об ошибке «Отказано в доступе» из-за междоменной безопасности.Как я могу сделать эту работу?Я видел что-то сделанное с помощью json (но я не могу получить строку json из моего внешнего источника), а что-то сделанное с помощью пост-сообщения HTML5.

вы можете увидеть его вживую по адресу: http://jsfiddle.net/QPBvJ/

код:

    $(document).ready(function(){
     $('#get').live('click', function() {

        var currentIFrame = $('#frameDemo');
        currentIFrame.contents().find("a").css("background-color","#BADA55");

        alert ("done")
    });
    });

<iframe src="http://api.jquery.com/" width="80%" height="600" id='frameDemo'></iframe>
<button id="get">Get</button>

Какой самый простой способ сделать эту работу.Спасибо

1 Ответ

27 голосов
/ 21 июня 2010

Нет способа заставить эту работу. Если внешний домен, к которому вы пытаетесь получить доступ, не поддерживает такую ​​процедуру, как C.O.R.S , JSONP или postMessage .

Есть несколько исключений (как всегда):

Если вы, например, имеете дело с WebApp, вы можете сказать своим пользователям, что им нужно предоставить доступ к cross-domain-calls.

Например, в Gecko / Firefox вы можете позвонить

netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead')

, который позволяет браузеру получать доступ к чужим доменам через ajax/iframes. В этом случае пользователь должен установить

signed.applets.codebase_principal_support

до true под about:config, чтобы сделать эту работу.

В Internet Explorers этого мира есть параметр, называемый чем-то вроде allow cross-domain access, глубоко скрытый на вкладке security, который должен быть установлен на enable.

Chrome разрешает междоменные вызовы с аргументом командной строки:

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