以下是我的代码。 这导致了意外的行为。 它导航到bing.com但它没有填写文本字段。此外,我注意到导航到新网页后控制台已被清除。
window.location = "https://www.bing.com";
window.onload = function(){
var editSearch = document.getElementById("sb_form_q");
editSearch.value = "Quux";
}
答案 0 :(得分:5)
您正在将onload
函数绑定到现有的window
对象。
当浏览器加载新页面时,它会生成一个新的window
对象,该对象不会在其上设置您的属性。
JavaScript在一个页面中运行(即使您通过开发人员工具运行它)也无法将变量保存到不同的页面上。
(可以使用localStorage和cookies等存储机制,但您需要在后续页面中查找代码)。
答案 1 :(得分:2)
JavaScript仅对您所在的当前页面有效。当您从DevTools控制台执行代码时,您正在该页面上执行代码。因此,当您使用window.location
导航到另一个页面时,您将丢失已定义的onload
处理程序。
要将处理程序添加到其他页面,必须以某种方式将其连接到您的页面(父级),例如iframe或弹出窗口。
ifrm = document.getElementById('frame');
ifrm.src = 'http://example.com';
ifrm.contentWindow.onload = function () {
// do something here with
// ifrm.contentWindow.document.getElementById('form')
}
答案 2 :(得分:1)
正如@Quentin所说。
但你可以采取另一种方式......
var keyword = "Quux";
window.location = "https://www.bing.com/search?q="+keyword;