2010-02-15 8 views
13

im Wesentlichen Ich versucheSeite laden und JS darauf ausführen ... von JS Bookmarklet?

  1. navigate auf eine Webseite
  2. Warten auf dieser Webseite
  3. führen eine JS-Funktion/alert/was auch immer

alle von einer auf dieser Seite zu laden einzelnes Bookmarklet. Ist das möglich? Ich kann anscheinend nicht aufladen, um für mich zu arbeiten, aber das mag an meinen eigenen persönlichen Fehlern liegen.

Antwort

3

Sie möchten die Erweiterung Greasemonkey für Firefox installieren. (Oder gm4ie für IE, oder greasemetal für Chrome (PersonalizedWeb funktioniert auch in eine viel einfachere Art und Weise für Chrome), greasekit für Safari oder user.js für Opera)

Greasemonkey können Sie genau das tun ... ein Skript ausführen, automatisch auf Jede Seite wird geladen (Sie können auswählen, welche Seiten/Sites geladen werden)

Andernfalls müssen Sie bei jeder Seitenladung auf Ihr Bookmarklet klicken, um Ihr Skript auszuführen.

+2

Also Greasemonkey (oder seine Entsprechung in $ Browser) ist die einzige Lösung dafür? Mein Ziel war es, ein Bookmarklet zu erstellen, das ich mit anderen teilen konnte, anstatt jeweils ein Add-On zu benötigen. Für einige Kontext ist das Problem, das ich versuche, um zu arbeiten, die Website meiner Schule. Die Webdesigner hielten es für eine geniale Idee, alle Links auf der Seite lediglich JS-Links zu machen, die durch eine kryptische Kombination von PHP und AJAX die Webseite aktualisieren. Leider ist es aufgrund der Art und Weise, wie sie das gemacht haben, momentan unmöglich, auf die Hausaufgabenseite Ihrer Klassen zu verweisen. – scikidus

+2

Stattdessen müssen Sie sagen "Gehen Sie zur Website, dann klicken Sie hier, dann klicken Sie hier, dann klicken Sie hier." Meine Hoffnung war, ein Bookmarklet zu machen, das die Website lädt und sobald die geladene Seite die JS-Links führt, die notwendig sind, um die gewünschte Seite zu erhalten. – scikidus

+0

Ah, @ scikidus Ich sehe ... naja, leider hört es sich so an, als ob die Seite außerhalb deiner Kontrolle ist. Sie könnten ein Bookmarklet erstellen/verwenden, aber es gibt keine Möglichkeit, es automatisch (ohne) auf eine Greasemonkey-Lösung zurückgreifen zu lassen. Gibt es eine Chance, dass Sie mit den Mitarbeitern Ihrer Schule sprechen können, um eine Lösung für die Website anzubieten? Wie für die ursprünglichen Entwickler (-1 für nur JS-Verbindungen) – scunliffe

1

Angesichts der Tatsache, dass es keine bessere Lösung gibt, dachte ich mir, dass Opera Benutzer-Skripts nativ unterstützt, die bei jedem Laden der Seite ausgeführt werden. Von dort aus könnte das Skript die aktuelle URL überprüfen und auf der entsprechenden Seite ausführen.

See here for documentation

6

Die einfachste Art, wie ich dies ähnlich, ohne dass Greasemonkey oder etwas zu tun, zu finden ist Ihre JS zu schreiben, so dass es überprüft, ob es auf der entsprechenden Seite, und es geht, wenn es nicht . Wenn es auf der Seite ist, führt es die JS/alert/was auch immer aus. Sie müssen das Bookmarklet zweimal benutzen, aber Sie brauchen nur ein Bookmarklet, und es kann immer noch schneller/einfacher sein, wenn der Benutzer das Klicken/was auch immer tut. So würde der Code wie folgt aussehen:

if(this.document.location.href != "[url]") { //Are we on the page yet? 
    this.document.location.href = "[url]"; // If not, go there 
} 
else { 
    if (document.readyState === "complete") { //Wait for the page to finish loading 
    // DO STUFF 
    } 
}