2009-05-11 13 views
3

Ich arbeite an einem Bookmarklet und dachte, ich würde eine Herausforderung auf mich werfen: wie man eine externe Javascript-Datei von einem Link in so wenig Zeichen wie möglich injiziert.Eine JavaScript-Datei mit möglichst wenig Zeichen einfügen?

Hier ist der kürzeste ich in der Lage war, um mit:

javascript:(function(d){d.body.appendChild(d.createElement('script')).src='URL'})(document) 

, dass ohne die URL 88 Zeichen ist.

Kann der Stack Overflow Javascript Gurus hier besser? Ich werde die funktionierende Antwort mit den wenigsten Charakteren akzeptieren, also zieh deine Gedanken an!

(Eine Sache: das Bookmarklet in allen gängigen Browsern funktionieren muss This ist eine clevere Lösung, aber in allen gängigen Browsern nicht funktioniert, weil es einen Wert zurückgibt..)

+0

Wenn Sie sagen ALLE Browser meinen Sie die großen 3 (Firefox, IE, Safari) oder meinst du ALLE Browser. – Kredns

+0

Wie wäre es mit all denen, die von der neuesten jQuery unterstützt werden? Von ihrer Website: IE 6.0+, FF 2+, Safari 3.0+, Opera 9.0+, Chrome –

Antwort

1

Angenommen, String.prototype ist nicht kontaminiert, können wir einige Zeichen speichern.

javascript:with(document)(body.appendChild(createElement('script')).src='URL')._ 
+0

ha, das ist schlau! –

+0

Ich mag, wie Sie das Wort "kontaminiert" haha ​​verwendet haben – ajax333221

5

Ich bin nicht sicher, warum Sie wickeln diese in einem Funktionsgehäuse - es scheint, ohne sehr gut zu arbeiten und ist fast ein Dutzend Zeichen kürzer:

javascript:void(document.body.appendChild(document.createElement('script')).src='URL') 

Abgesehen davon, aber Ihre Implementierung ziemlich minimalistisch aussieht.

+0

Dies ist, warum: http://subsimple.com/bookmarklets/rules.asp#ReturnValues ​​ Dieser Ansatz wird die URL zurückgeben, In einigen Browsern funktioniert das nicht. –

+0

Ich sehe, behoben. Noch kürzer, aber nicht so sehr. :-) –

6
javascript:void(with(document)body.appendChild(createElement('script')).src='URL') 

79 Zeichen. Kredit an Ben Blank für die Verwendung von void.

+0

aber du verwendest mit, was in manchen Kreisen verpönt ist. –

+0

Nun, da der einzige Bereich dieses Codes ein Bookmarklet ist, glaube ich nicht, dass die üblichen Gründe dafür sprechen. –

+0

Die meisten Dinge sind in einigen Kreisen verpönt. Zum Beispiel, einige Leute missbilligen IF, sagen, dass GOTOs viel einfacher waren. Sie sind natürlich völlig falsch. :-) –