Gibt es eine Möglichkeit, Javascript in den URL-Teil eines WordPress-Menüelements einzufügen? Ich habe eine Live-Chat-Funktion auf meiner Website und soll diesen Code auf die Website setzen, um einen Link zum Öffnen des Live-Chats zu erstellen (wie hier vorgeschlagen).
<!-- BEGIN OLARK CHAT LINK -->
<a href="javascript:void(0);" onclick="olark('api.box.expand')">
Click here to chat!
</a>
<!-- END OLARK CHAT LINK -->
Der Client möchte den Link in der Utility-Navigationsleiste, die über ein WordPress-Menü im WordPress-Dashboard erstellt wurde. Wenn ich jedoch kopiere und javascript:void(0);" onclick="olark('api.box.expand')
in das URL-Feld im WordPress-Dashboard einfüge, verschwindet es einfach und der Link bleibt inaktiv.
Etwas, das ich gelesen habe, besagte, dass ich möglicherweise eine benutzerdefinierte Klasse auf den betreffenden Link setzen und dann eine Javascript-Funktion schreiben könnte, die ausgelöst wird, wenn auf den Link mit dieser Klasse geklickt wird. Ich habe das allerdings versucht und konnte es nicht zum Laufen bringen. Ich kenne nicht viel Javascript, daher ist es möglich, dass ich es völlig falsch geschrieben habe.
Weiß jemand, wie man das macht? Ich würde es gerne ohne Plugin machen.
quelle
onclick
Attribut verlassen, um Javascript auszuführen.click()
Event nachzuschlagenonclick
Attribut verlassen sollte. Ich werde aufschauen.click()
.Antworten:
Gut, dass es funktioniert. Wenn es sich um einen Client handelt oder wenn Sie nur einen saubereren Code wünschen, können Sie dies wie von @Tom J Nowell vorgeschlagen tun.
Fügen Sie einen benutzerdefinierten Menüpunkt hinzu und verknüpfen Sie ihn mit Nirgendwo oder irgendwo. Finden Sie die Menüelement-ID heraus (jedes Element hat eine) und zielen Sie dann mit jQuery auf diese ID ab.
Auf diese Weise wird jedes Mal, wenn ein Benutzer darauf klickt,
menu-item
das obige Skript ausgelöst. Sie können das jquery-Skript über functions.php in die Warteschlange stellen.Aktualisieren:
Stellen Sie sicher, dass Ihre olark.js geladen wird. Wenn Sie es der Fußzeile oder Kopfzeile hinzufügen, überprüfen Sie Ihre Seite und stellen Sie sicher, dass das Skript vorhanden ist. Stellen Sie außerdem sicher, dass in der Browserkonsole keine Fehler angezeigt werden.
Wickeln Sie Ihr js mit einem bereitstehenden Dokument ein, damit das Skript zum richtigen Zeitpunkt ausgeführt wird:
Die Tatsache, dass der Link nicht geladen wird, bedeutet, dass etwas mit dem Skript selbst nicht stimmt oder dass das Skript überhaupt nicht geladen wird.
quelle
#
(weil ich sie dort im Wordpress-Dashboard festgelegt habe). Folgendes habe ich in olark.js eingefügt:$("#menu-item-38872").on("click", function(e){ e.preventDefault(); // olark code here olark('api.box.expand'); });
Was mache ich falsch?jQuery(document).ready(function($) {
hat den Trick gemacht! Danke, @gdaniel!Lösung Nr. 1 (nicht ideal, aber es funktioniert):
Lösung 2 (ideal):
Mit Hilfe der obigen Kommentare ist hier die Lösung, die für mich funktioniert hat. Ich habe eine neue Datei namens olark.js erstellt und diesen Code eingefügt:
Dann habe ich das Skript in meiner functions.php mit dem folgenden Code in die Warteschlange gestellt:
Wenn es nicht funktioniert, stellen Sie sicher, dass Sie Ihr Skript ordnungsgemäß in die Warteschlange stellen. Ich verwende ein untergeordnetes Thema, also musste ich
get_stylesheet_directory_uri()
stattdessen verwendenget_template_directory_uri()
.quelle
Ich denke, es gibt eine "zuverlässigere" Option. Wenn Sie beispielsweise Ihren Code von der Entwicklung in die Produktion migrieren, ist es nicht garantiert, dass Sie sich auf die Menüelementnummer verlassen. Wenn Sie die Zahl in eine Einstellung verwandeln, wird sie besser, aber immer noch nicht wirklich gut.
Eine Alternative könnte darin bestehen, über Ihren Menüpunkt einen Link zu einem nicht vorhandenen Anker wie #olark zu erstellen. Dies kann über die Benutzeroberfläche eingestellt werden und ist in allen Umgebungen zuverlässig. Dann sollte Ihr separates Skript die Hash-Änderung (in der Adressleiste des Browsers) beobachten und entsprechend handeln.
Ein einfaches Kaffee-Skript-Beispiel, das in Javascript kompiliert wird und den Hash-Wechsel abhört:
@showLogin
ist eine Funktion, die ein Dialogfeld anzeigt, in dem Sie sich anmelden können, wenn der Hash gleich '#login' ist.[Bearbeiten] Komischerweise ändert sich der Hash in der Adresse nicht , wenn Sie auf einen Menüpunkt klicken. Dies ist unerwartet und kann auf ein anderes Skript zurückzuführen sein, das das Standardereignis verhindert. Also musste ich eine weitere Zeile hinzufügen, damit sich die Position des Fensters als Reaktion auf das Klicken auf einen Link ändert:
[/bearbeiten]
quelle
Sie können dies zu functions.php verwenden, um ein zusätzliches Skript im Navigationsmenüelement hinzuzufügen
quelle