有没有办法加载网页,然后使用javascript书签填写表格?

时间:2011-11-21 00:08:25

标签: javascript firefox bookmarklet

  

可能重复:
  Using Javascript to Open a New Page and Populate Form Values There

我正在尝试编写一个将导航到某个网页的书签,然后执行表单填写脚本。问题是,一旦新页面开始加载,脚本就会终止。

起初我以为我必须让脚本运行一个循环来等待新页面加载。我尝试使用一个测试新window.location的循环,然后我尝试了一个循环,一直试图填写表单上的第一个元素,直到它验证该值是脚本试图插入的值。我还尝试使用window.onload事件处理程序来执行填充表单的函数。经过一些测试后,我确定只要加载页面,书签就会停止运行,无论我做什么。

有没有办法阻止这种情况发生,或者在页面加载后让bookmarklet调用一些新的代码来执行?

这是我试过的:

javascript:
window.location = 'https://www.somesite.com/someform.pl';
while (window.location != 'https://www.somesite.com/someform.pl') {
}
// Commands to fill and submit the form

另外,我试过

javascript:
window.location = 'https://www.somesite.com/someform.pl';
while ((typeof document.getElementsByName('FirstElementName')[0] === "undefined") || (document.getElementsByName('firstelementname')[0].value != "myvalue")) {
    document.getElementsByName('FirstElementName')[0].value='myvalue'; 
}
// Additional form fill commands, and command to submit

在这两种情况下,它只是带我到网站。如果我在页面加载后执行相同的书签,则填充表单并提交。我想要完成一个bookmarklet的调用。如果我在循环中设置警报,在每次迭代中给我一条消息,消息框会显示,然后在新页面加载后消失。实际上,如果你使用window.location导航到一个新页面,那么运行一个无限循环,除了重复给你相同的消息之外什么都不做,循环在新页面加载时终止。

注意:我知道Greasemonkey可以在每次加载给定页面时执行代码。我想找到一种方法来使用bookmarklet,而无需浏览器扩展。我使用FireFox并且不接受任何替代品! :)

0 个答案:

没有答案