Frage

zur Zeit i auf einem Proxy-Skript verlasse mich dieses Problem von Single Origin Politik zu behandeln. es ist langsam, und schafft Overhead. Nicht zu vergessen, ist Javascript nicht gemacht werden.

ist es eine funktionierende Alternative gibt?

War es hilfreich?

Lösung

Die Sanitäter, ich glaube, die Lösung die Sie suchen mit IFRAMEs ist. Doch der iframe Ansatz ist sowohl ein geistiges und technische Unternehmen. Ich schlage vor, Sie mit diesem Handbuch zu starten:

domänenübergreifender Kommunikation mit IFrames

Der alternative Ansatz wird immer Daten von einem anderen Server Script-Tags und json asynchron mit:

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

Sie können ein neues SCRIPT-Tag erstellen Element DOM passieren und Laden von Daten und hängen oder das Markup in ein Element innerHTML- einfügen.

Ich bin sicher, können Sie einige detaillierte Beispiele und Wege finden, zu implementieren, aber eine Sache, sollten Sie eine Spur mit dem neuen SCRIPT Methode halten fügt so viele tot er DOM. Dies könnte einen Ausgangspunkt für Sie hilft und bieten:

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

(ungetestet, aber sollte Arbeit!)

So oder so -. Viel Glück

Andere Tipps

Wenn Sie einen Rückruf Namen als Parameter an den Dienst zur Verfügung stellen können den JavaScript-Code in Frage bereitstellt, können Sie einen Skript-Tag zu Ihrem Dokument anhängen, mit einem src Attribute auf den Service-Aufruf zeigt. Ansonsten bist du kein Glück.

ein iframe verwenden und versuchen window.postMessage(message, origin) (es wäre aus dem iframe und parent.postMessage von oben Seite iframeElement.contentWindow.postMessage werden) für alle aktuellen gängigen Browsern (Firefox, IE, Safari, Chrome, etc.) und Ändern / Polling window.name für alte Browser.

JSON-P ist so ziemlich ideal für diese Art der Sache. Wenn Sie jQuery verwenden, oder ähnliche JavaScript-Bibliotheken, Ihre Arbeit ist noch einfacher:

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

Natürlich wird es auf genau davon abhängen, was Sie versuchen, das zu tun, wird geprüft, ob JSON-P, versteckte iFrames zu verwenden, postmessage, Flash-Proxies oder andere exotische Lösung.

Wenn Sie beide Domänen steuern und kümmern sich nur um Firefox 3.5+, können Sie das XMLHttpRequest-Objekt verwenden und richten Sie Berechtigungen mit Access Control .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top