2008-11-06 9 views
54

Gibt es eine einfache Möglichkeit, diesen Code zu ändern, so dass die Ziel-URL im GLEICHEN Fenster geöffnet wird?JavaScript: Öffnen Sie eine neue Seite im selben Fenster

<a href="javascript:q=(document.location.href);void(open('http://example.com/submit.php?url='+escape(q),'','resizable,location,menubar,toolbar,scrollbars,status'));">click here</a>`` 

Antwort

69

Der zweite Parameter von window.open() ein String ist, den Namen des Zielfensters darstellt.

Setzen Sie es auf: "_self".

<a href="javascript:q=(document.location.href);void(open('http://example.com/submit.php?url='+escape(q),'_self','resizable,location,menubar,toolbar,scrollbars,status'));">click here</a> 


Nebenbei bemerkt: Die folgende Frage einen Überblick über ein wohl besser nachgibt Event-Handler zu HTML-Links zu binden.

What's the best way to replace links with js functions?

7
<a href="javascript:;" onclick="window.location = 'http://example.com/submit.php?url=' + escape(document.location.href);'">Go</a>; 
1

Ich würde nehmen, dass eine etwas andere Art und Weise, wenn ich Sie wäre. Ändern Sie die Textverknüpfung beim Laden der Seite und nicht beim Klicken. Ich werde das Beispiel in jQuery geben, aber es leicht in Vanille getan werden könnte Javascript

$(function() { 
    $('a[href$="url="]') // all links whose href ends in "url=" 
     .each(function(i, el) { 
      this.href += escape(document.location.href); 
     }) 
    ; 
}); 

(obwohl, jQuery schöner ist) und schreiben Sie Ihre HTML wie folgt aus:

<a href="http://example.com/submit.php?url=">...</a> 

die Vorteile dieser sind, dass Leute sehen können, worauf sie klicken (der href ist bereits gesetzt), und es entfernt das Javascript von Ihrem HTML.

All dies gesagt, es sieht so aus, als ob Sie PHP verwenden ... warum nicht in Server-Seite hinzufügen?

1

Also durch Hinzufügen der URL am Ende der href, Jeder Link wird im selben Fenster geöffnet? Sie könnten wahrscheinlich auch _BLANK innerhalb des HTML verwenden, um dasselbe zu tun.

3

versuchen, dies es für mich gearbeitet in IE 7 und IE 8

$(this).click(function (j) { 
      var href = ($(this).attr('href')); 
      window.location = href; 
      return true; 
70
<script type="text/javascript"> 
window.open ('YourNewPage.htm','_self',false) 
</script> 

siehe Referenz: http://www.w3schools.com/jsref/met_win_open.asp

+0

Das ist wirklich rette meinen Tag ehehe ... :) –

+0

Das 'false' soll bedeuten, dass du den Zurück-Knopf benutzen kannst, um zurück zu gehen o die Seite, die das Fenster erstellt hat, oder? Das funktioniert nicht für mich. – Noumenon

2

Hier ist, was für mich gearbeitet:

<button name="redirect" onClick="redirect()">button name</button> 
<script type="text/javascript"> 
function redirect(){ 
var url = "http://www.google.com"; 
window.open(url, '_top'); 
} 
</script>