vBulletin 4: Fehlerhafte Bestätigung zum Verlassen beim posten ausblenden

vBulletin 4: Fehlerhafte Bestätigung zum Verlassen beim posten ausblenden

Wenn man in vBulletin 4 mit dem Verfassen eines Beitrages beginnt und anschließend navigieren möchte (z.B. Klick auf einen Link), erscheint eine Warnmeldung. Die Idee dahinter ist grundsätzlich nicht schlecht: Möchte man schließlich nicht den Inhalt des Beitrages bzw. möglicherweise durch den Autosave-Intervall einen Teil davon verlieren, wenn man irrtümlich einen Link angeklickt hat.

Doch dieses Feature scheint in vBulletin 4 verbuggt zu sein. Verfasst man über die Schnell-Antworten Funktion (also das Editor-Feld unter dem letzten Beitrag) eine neue Antwort und klickt auf absenden, wird ebenfalls folgende Meldung angezeigt:

Diese Seite bittet Sie zu bestätigen, dass Sie die Seite verlassen möchten – Daten, die Sie eingegeben haben, werden unter Umständen nicht gespeichert.

Wobei dies nicht regelmäßig passiert, sondern nur sporadisch. Es scheint kein Muster zu geben, was die betroffenen Themen, Nutzer oder Browser angeht. Dieses Problem ist bei vBulletin seit 2011 bekannt, scheint aber nicht behoben worden zu sein. Die einzige Lösung besteht daher in einem manuellen Workaround durch das manuelle bearbeiten der JavaScript-Dateien.

Der betroffene Code befindet sich in der Datei includes/vbulletin_textedit.js. Da die JavaScript-Dateien von vBulletin standardmäßig komprimiert ausgeliefert werden, kann hier keine sinnvolle Zeilenangabe gemacht werden. Stattdessen muss nach

if(A){YAHOO.util.Event.addListener(window,"beforeunload",this.exit_prompt,this,true)}

gesucht werden. Dazu genügt das Öffnen der Datei mit einem Texteditor (z.B. Notepad++) und die Verwendung der Suche-Funktion. Diese If-Abfrage muss auskommentiert oder entfernt werden, um den unerwünschten Dialog zu verhindern. Laut anderen betroffenen soll bereits das Abändern des letzten Parameters von true auf false bereits helfen, was ich allerdings nicht bestätigen kann.

Der große Nachteil an dieser Lösung ist natürlich die Veränderung des Cores. Bei jedem Update muss sie erneut vorgenommen werden, da ansonsten das Problem wieder auftritt – außer vBulletin sollte dies in einem Update beheben. Wobei dies in Anbetracht der Tatsache, dass dieser Fehler scheinbar seit 5 Jahren existiert, eher nicht zu erwarten ist. Andererseits ist das ignorieren dieses nervigen Fehlers auch keine Option. Daher ist es empfehlenswert, diesen Workaround zumindest zu dokumentieren. So wird er bei einem Update nicht vergessen.

Um Caching-Probleme zu verhindern, macht es außerdem Sinn, einen Caching-Key zu setzen. Im Template SHOWTHREAD wird dazu der v Parameter des Scriptes vbulletin_textedit.js geändert. Beispielsweise v=1. Dadurch laden die meisten Browser die Datei neu, wodurch verhindert wird, dass die veraltete gecachte Version Anwendung findet.

Leave a Reply