2016-08-03 3 views
0

Ich verwende DCEF3, eine Delphi-Wrapper für Chrom. Ich betreibe viel JS-Code auf meiner app mit Seiten, wie im folgenden Beispiel zu interagieren:Halten Sie die Seite aktiv nach dem Ausführen von JS-Code in der URL

document.getElementById('name').value = 'Test'; 

Dazu i die ‚Last‘ Methode von Chromium anrufen und den Code unten in das URL-Feld auszuführen:

javascript:document.getElementById('name').value = 'Test'; 

Es ist das gleiche wie ich Chrome öffnen und den obigen Code in das URL-Feld einfügen. Es funktioniert, aber das Problem ist, nachdem ich den Befehl ausgeführt habe, ersetzt der Browser die aktuelle Seite für eine leere Seite mit dem Inhalt "Test".

Die einzige Art, wie ich dieses Problem zu vermeiden, finden konnte, um das Element zu füllen und die Seite aktiv zu halten, ist einen zusätzlichen ‚Focus‘ Befehl in der gleichen URL, wie dies auszuführen:

javascript:document.getElementById('name').value = 'Test'; 
document.getElementById('name').focus(); 

Die Die zusätzliche "Fokus" -Methode scheint Chrome zu zwingen, die aktuelle Seite aktiv zu lassen, anstatt sie durch eine leere Seite zu ersetzen.

Ist dieser Ansatz korrekt? Gibt es einen besseren Weg, diese Aufgabe zu erfüllen?

Danke!

Antwort

1

Der Fokus muss nicht aufgerufen werden.

Sieht so aus, als ob es jetzt nicht möglich ist, die Weiterleitung zu deaktivieren, indem am Ende nur false zurückgegeben wird.

Noch können Sie Fokus durch void(0) ersetzen;

javascript:document.getElementById('name').value = 'Test'; void(0) 

void(0) war beliebt Idiom, dass Link, um anzuzeigen, wo jeder nicht zeigen. Es ist jetzt zu sehen, aber es funktioniert immer noch in Browser-URL.

Übrigens ist "javascript:" in URL in den meisten Browsern deaktiviert.

+0

Ich testete Ersetzen des Fokus durch die 'Rückkehr falsch', aber der Elementwert auf dem Bildschirm wird nicht geändert ... – delphirules

+1

Aktualisierte Antwort. Sollte jetzt funktionieren. – Arnial

Verwandte Themen