2008-08-12 2 views
41

Ich denke, dass der Grund, warum ich kann das nicht tun, weil es eine große Sicherheitslücke sein könnte, aber hier geht ...ein Lesezeichen hinzufügen, die nur Javascript, kein URL

Ich mag ein Lesezeichen in meinem Browser (FF3, vorzugsweise), das ist nur ein Schnipsel von JavaScript-Code. Es würde lediglich eine URL basierend auf dem aktuellen Datum erstellen und dann ein window.location = auf dieser URL vornehmen.

Ich weiß, dass ich eine Seite erstellen und auf meinem lokalen Computer behalten konnte und nur auf diese Weise verweisen kann, aber ich habe mich nur gefragt, ob Sie diesen Schritt umgehen könnten und tatsächlich die "Position" des Lesezeichens wirklich haben Sei Javascript. Ich hätte schwören können, dass dies schon vor Jahren möglich war, aber ich kann nichts finden, was mir das jetzt sagt.

Antwort

54

Was Sie wollen, ist ein bookmarklet sie sind einfach zu erstellen und sollte in den meisten gängigen Browsern funktionieren.

Edit: Stapelüberlauf scheint nicht zu schaffen Bookmarklets in Zusammenhang mit der Website zu ermöglichen, im Grunde können Sie ein neues Lesezeichen erstellen und die folgend im Standortfeld

javascript:window.location='http://www.google.com/search?q='+Date()

geben ein Bookmarklet zu erhalten, die Google-Suche für das aktuelle Datum.

8

Nun, Ich habe gerade ein Lesezeichen in FF3, ging zurück und es aktualisiert und ergänzt den folgenden Test:

javascript:alert('Wacky%20test%20yo'); 

Und siehe da, nachdem ich gespeichert und geladen, konnte ich meine Warnung erhalten.

Ich bin sicher, dass Sie etwas ähnliches für Ihre Bedürfnisse aufarbeiten können.

11

Ein kleiner Fang. IE kann nur eine Zeichen-URL in diesem Format verarbeiten. Wenn Sie es in IE mit einer URL länger als das speichern, wird es ohne Warnung abgeschnitten und daher fehlschlagen.

Wenn Sie ein wirklich komplexes Skript benötigen, müssen Sie ein "gehostetes" Bookmarklet verwenden, wo Sie ein kurzes Lesezeichen haben, das ein Skript-Tag in die Seite einfügt, um das gehostete Bookmarklet aufzurufen.

Es ist nicht so schön/portabel, aber es ist die einzige Problemumgehung.

+5

So das Muster dafür ist, so etwas wie: javascript: (function() { document.body.appendChild (document.createElement ('script')) .src = 'http: //www.yoursite.com/js/bookmarklet.js';})(); – Shermozle

+0

korrekt. Sie müssen nur den gewünschten Skript-Inhalt von einer anderen Site laden. – scunliffe

9

Google Bookmark

javascript:(function(){var%20a=window,b=document,c=encodeURIComponent,d=a.open("http://www.google.com/bookmarks/mark?op=edit&output=popup&bkmk="+c(b.location)+"&title="+c(b.title),"bkmk_popup","left="+((a.screenX||a.screenLeft)+10)+",top="+((a.screenY||a.screenTop)+10)+",height=420px,width=550px,resizable=1,alwaysRaised=1");a.setTimeout(function(){d.focus()},300)})(); 
19

Es ist bemerkenswert, dass Sie auch, dass in Abhängigkeit Wrapper setzen können. imranamajeed hat das nett für uns illustriert ... aber anscheinend bin ich zu neu auf der Seite, um seinen Posten zu verbessern. : P

so für Klarheit:

javascript:(function(){ 
    location.href = location.href + "#"; 
})(); 

(die Zeilenumbrüche beeinflussen Leistung in Chrom und IE nicht)

+0

Ja, wenn Sie es in eine Funktion einschließen, wird verhindert, dass der Rückgabewert mit dem aktuellen Fenster verwechselt wird. – mb21

Verwandte Themen