2016-10-01 9 views
1

Ich möchte die JavaScript-Funktion einer Webseite von einer anderen Webseite aufrufen. Angenommen, ich habe eine Funktion myFunction(), die in A.html definiert ist, und ich möchte es in B.html mit onclick Attribut verwenden. Wie würde ich myFunction() mit onclick in B.html anrufen, so dass es einige Änderungen in A.html bringen könnte? HierSo rufen Sie die JavaScript-Funktion einer Webseite von einer anderen Webseite mit dem onclick-Attribut in html auf?

ist das Beispiel ...

A.html umfasst

<script> 
function myFunction() { 
    document.getElementById("my_contents").style.display="block"; 
} 
</script> 

wo B.html haben

<a href="Contents.html#entertainment" target="ccc" onclick="myFunction()"> 
<h4>Entertainment</h4></a> 
+0

Ist es nicht möglich, eine Datei mit dem Namen 'script.js' mit Ihrer Funktion darin erstellen und sie auf beide importieren Seiten? –

+0

Sie können das nicht tun. Versuchen Sie nicht einmal –

+0

hängt von ihrer Beziehung zueinander ab, wenn sie auf der gleichen Domain sind und man in einen iframe eingebettet ist, es ist nur eine Frage des Zugriffs durch den iframe-Bereich, dh 'iframe.contentWindow.myFunction' (if es ist global). Andernfalls müssen Sie für jede Nachricht Fenstermeldungen implementieren und die Funktion basierend auf einer empfangenen Nachricht ausführen. –

Antwort

2

Was Sie versuchen, unmöglich zu tun ist, weil HTML-Seiten machen nicht "Lokale" Funktionen, die anderen Webseiten zur Verfügung stehen.

So lösen Sie Ihr Problem: Erstellen Sie eine Datei mit dem Namen script.js. Platzieren Sie Ihre Javascript-Funktion darin ohne die <script> Tags.

Im <head> Tag sowohl Ihre Web-Seiten, fügt <script src="path/to/script.js"></script>

+0

Thanks.This Antwort ist einfach für mich. –

0

Sie müßten eine separate Datei wie MyScript.js erstellen und in der der Seite verbinden den script-Tag.

1

Zuerst muss ich eine Verknüpfung zwischen dem Fenster, wie Sie die Seiten mit window.open() geöffnet haben.

Fensterobjekt ist das globale Objekt in JavaScript. Wenn das Fenster (die Seite) den Namen hat, können Sie eine Fenstermethode von einer anderen aufrufen. Um die Elternfensterfunktion aus dem Kindfenster aufzurufen, rufen wir die Funktion window.opener auf. Erkunden Sie weitere Optionen in diesem Bereich.

Sie können keine Seiten JavaScript-Funktion von jeder Seite aufrufen, wie Sie nicht JavaScript-Funktion von google.com in facebook.com aufrufen können, bis die Facebook-Seite nicht von google.com Seite mit window.open() geöffnet ist.

+0

Versuchen Sie dies, wenn es zu Ihrer Situation passt. http://stackoverflow.com/questions/25098573/how-to-call-parent-window-function-from-child-window-jquery –

1
  1. können Sie verwenden local (Seiten auf der gleichen Domain Zugriff auf denselben Speicher haben). Speichere Nachrichten/Anweisungen im Speicher und beide Seiten überprüfen es nach Timer.

  2. Oder verwenden Sie die Methode postmessage (https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage) wenn Seite B von Seite A.

Es gibt einige interessante Lösungen auf Stackoverflow geöffnet: Javascript communication between browser tabs/windows

Beispiel Lösung :

A.html

<script> 
setInterval(function(){ 
    var isNeedCall = localStorage.getItem('isNeedCall'); 

    if(isNeedCall == 'yes'){ 
    myFunction(); 
    localStorage.setItem('isNeedCall', 'no'); 
    } 
}, 500); 

function myFunction() { 
    document.getElementById("my_contents").style.display="block"; 
} 
</script> 

b.html

<script> 
function myFunction() { 
    localStorage.setItem('isNeedCall', 'yes'); 
} 
</script> 

<a href="Contents.html#entertainment" target="ccc" onclick="myFunction()"> 
<h4>Entertainment</h4></a> 
0

Von den Blicken von dem, was Sie versuchen zu erreichen, es klingt wie Sie diese definiert „Wert“ würde speichern von ‚A. html 'in irgendeiner Form einer geschriebenen Datei oder einer SQL-Datenbank ... dann muss der Wert in "B.html" mit irgendeiner Art von Standardwert gefüllt werden, es sei denn, er ist in der gespeicherten Datei/SQL-Datenbank spezifiziert. Dies kann erreicht werden, aber nicht nur mit HTML und Javascript, wie von Tom Nijs gezeigt. Sie könnten das Ergebnis wahrscheinlich mit PHP oder Java erreichen.

... oder ignorieren, was ich gesagt habe und nur eine Liste/ein Array von vordefinierten Werten haben.

0

Seite B kann jede Funktion auf Seite A aufrufen. (Falls erforderlich, befindet sich die Funktion im Fensterobjekt). Es ist nicht sicher, aber es funktioniert.

Seite A:

<script> 
    var callFunction; 

    setInterval(function(){ 
    callFunction = localStorage.getItem('callFunction'); 

    if(callFunction && (window[callFunction] instanceof Function)){ 
     window[callFunction](); 
     localStorage.setItem('callFunction', ''); 
    } 
    }, 500); 

    function myFunction() { 
    document.getElementById("my_contents").style.display="block"; 
    } 
</script> 

Seite B:

<script> 
    function callFunction(functionName){ 
    localStorage.setItem('callFunction', functionName); 
    } 
</script> 

<a href="/" onclick="callFunction('myFunction')"> 
Verwandte Themen