我使用DCEF3,一个用于Chromium的Delphi包装器。我在我的应用程序上运行了很多JS代码来与页面进行交互,如下例所示:
document.getElementById('name').value = 'Test';
为此,我调用Chromium的'load'方法并在URL字段中运行以下代码:
javascript:document.getElementById('name').value = 'Test';
与我打开Chrome并将上面的代码粘贴到网址字段中是一回事。它可以工作,但问题是在我运行命令后,浏览器将当前页面替换为内容为“Test”的空白页面。
我可以找到避免此问题的唯一方法,即填充元素并保持页面处于活动状态,就是在同一个URL中运行一个额外的'focus'命令,如下所示:
javascript:document.getElementById('name').value = 'Test';
document.getElementById('name').focus();
额外的“焦点”方法似乎迫使Chrome保持当前页面处于活动状态,而不是将其替换为空白页面。
这种做法是否正确?有没有更好的方法来完成这项任务?
谢谢!
答案 0 :(得分:1)
无需调用焦点。
现在看起来不能通过在结尾处返回false来禁用重定向。
但是,您可以使用void(0)
;
javascript:document.getElementById('name').value = 'Test'; void(0)
void(0)
是流行的成语,表示链接没有指向任何地方。它现在很难看到et,但它仍然在浏览器URL中工作。
顺便说一下," javascript:"在大多数浏览器中禁用URL。