2016-11-08 3 views
-3

ich diesen Code bin mit einem neuen Tab zu öffnen:window.open auf einem-Tag für neue Registerkarte

<a href="javascript:window.open('https://example.com','_blank')">linktext</a> 

Die neue Seite gibt es auch in einem neuen Tab jedoch auf der Quellseite wird [object] gezeigt geladen wird anstelle des Links. Was ist falsch?

Ich will nicht

<a href="https://example.com" target="_blank")">linktext</a> 

verwenden, weil ich eine Liste von Links und die Zielseite erzeugen unterschiedlich für jeden Link genannt. Der flexibelste Weg ist für mich die give Syntax.

EDIT: Dies ist die erzeugte Linkliste:

<a href="javascript:window.open('https://example.com','_blank')">linktext 1</a> 
<a href="javascript:jsfunc1(param1)">linktext 2</a> 
<a href="javascript:jsfunc2(param2,param3)">linktext 3</a> 

Das Attribut href erzeugt wird. Ich bekomme einen von einem Tisch.

+0

Das Beispiel oben funktioniert gut; [Beweis] (https://jsfiddle.net/mkmxyueu/). Wir können Ihnen nicht ohne ein Beispiel helfen, was * nicht * funktioniert. –

+0

Wo siehst du [Objekt]? Ihre Frage ist völlig unklar. Befüllen Sie die URL in der href Schleife ein Array? zeige den Code –

+0

@ T.J.Crowder Ich denke, dass OP die URL von einem Array an die href sendet und das Skript Objekt anstelle des erwarteten Werts aus dem Array platziert. Wir vermissen den ganzen notwendigen Code –

Antwort

2

Der Punkt einer javascript: Schema URL ist zu erzeugen einen Ersatz Ment Seite von JavaScript. Es ist nicht dafür ausgelegt, JavaScript als Antwort auf einen Client auszuführen, während die Seite allein gelassen wird - dafür stehen Event-Handler zur Verfügung.

Die neue "Seite", die Sie sehen, ist das Ergebnis der Konvertierung des Verweises auf das neue Fenster in eine Zeichenfolge.

Dies wird am besten vermieden wird, indem nicht JavaScript für diese Verwendung:

<a href="https://example.com" target='_blank'>linktext</a> 

Sie es auch durch die Vermeidung von javascript: Schema URIs tun können mit und Bindung Ihrer JS separat (mit einem vernünftigen Rückfall in der href):

<a href="https://example.com">linktext</a> 

<script> 
    document.querySelector("a").addEventListener("click", your_function); 
    function your_function(evt) { 
     evt.preventDefault(); 
     // Then do whatever else you want the function to do 
    } 
</script> 

Wenn Sie wirklich das JavaScript-URL-Schema verwendet werden sollen (die, wie ich oben angedeutet, ist ein schmutziger Hack), Sie, dass das Skript nichts mit dem void Operator gibt gewährleisten kann:

<a href="javascript:void (window.open('https://example.com','_blank'))">linktext</a> 
+0

Sie sind der Einzige, der meine Frage sorgfältig gelesen und darauf hingewiesen hat, wie Sie das aktuelle Verhalten vermeiden können. Danke dir! – zuluk

-1

Das obige Beispiel funktioniert gut. Below-Code Kasse:

<a href="javascript:window.open('https://example.com','_blank')">linktext</a>

andere Wege Link in neuem Tab zu öffnen:

<a href="#" onClick="window.open('http://www.yahoo.com', '_blank')">test</a> 

Ohne JS:

<a href="http://yahoo.com" target="_blank">test</a> 
+0

"Das obige Beispiel funktioniert gut" - Nicht in der Lage, das Problem zu reproduzieren ist nicht etwas, das in eine Antwort gehen sollte. – Quentin

Verwandte Themen