Вопрос

В настоящее время я использую прокси-скрипт для решения этой проблемы политики единого происхождения. это медленно и создает накладные расходы. Не говоря уже о том, что JavaScript не отображается.

есть ли рабочая альтернатива?

Это было полезно?

Решение

О, дорогой, я думаю, что решение, которое вы ищете, - это использование IFRAME. Однако подход iframe - это и умственное, и техническое начинание. Я предлагаю вам начать с этого руководства:

Междоменная связь с IFrames

Альтернативный подход - асинхронное получение данных с другого сервера с использованием тегов script и json:

<script src="http://remotesite.com/path/to/script/blah.js"></script>

Вы можете создать новый элемент тега SCRIPT для передачи и загрузки данных и добавления в DOM или вставки разметки в элементы innerHTML.

Я уверен, что вы можете найти некоторые подробные примеры и способы реализации, но одну вещь, которую вы должны отслеживать с помощью нового метода SCRIPT, - это добавление в DOM такого большого количества. Это может помочь вам и послужит отправной точкой:

function require (url, callback) {
    if (!isScriptLoaded(url)) { 
        document.write('<script src="' + url + '" type="text/javascript" charset="utf-8"><\/script>');

        if (callback) {
            callback();
        }
    }
}

function isScriptLoaded(src) {
    var scriptsLoaded =  {};
    var scriptTags    = document.getElementsByTagName("script");

    for (var i = 0, script; script = scriptTags[i]; i++) {
        if (script.src) { 
            scriptsLoaded[script.src] = 1;
        }
    };

    if (scriptsLoaded[src]) {
        return true; 
    }

    return false;
}

(не проверено, но должно работать!)

В любом случае - удачи.

Другие советы

Если вы можете предоставить имя обратного вызова в качестве параметра для службы, предоставляющей соответствующий код JavaScript, то вы можете добавить в документ тег сценария с атрибутом src , указывающим на вызов службы. , В противном случае вам не повезло.

Используйте iframe и попробуйте window.postMessage (message, origin) (это будет parent.postMessage из iframe и iframeElement.contentWindow.postMessage с верхней страницы) для всех последних основных браузеров (Firefox, IE, Safari, Chrome и т. д.) и изменение / опрос window.name для старых браузеров.

JSON-P идеально подходит для такого рода вещей. Если вы используете jQuery или аналогичные библиотеки JavaScript, ваша работа станет еще проще:

http://docs.jquery.com/Ajax/jQuery.getJSON#urldatacallback

Конечно, именно от того, что вы пытаетесь сделать, зависит, будете ли вы использовать JSON-P, скрытые фреймы, postMessage, Flash-прокси или любое другое экзотическое решение.

Если вы управляете обоими доменами и заботитесь только о Firefox 3.5+, вы можете использовать объект XMLHttpRequest и настроить разрешения с помощью Контроль доступа .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top