如何使用JavaScript在新打开的网页中填充指定文本框内容
实现前提
- 必须满足浏览器同源策略要求:当前执行JS的页面,和目标页面
https://Somerandonwebsite.com/task的协议、域名、端口三者完全一致,否则浏览器会出于安全限制禁止跨域操作新页面的DOM,无法直接实现填充需求。
实现逻辑
必须先打开目标页面,等待页面完全加载完成后再操作文本框填充,页面未加载完成时无法获取到titleBox元素,填充操作会失效。
同域场景完整代码实现
function fillText() { // 打开目标页面,获取新窗口的引用 const newWin = window.open("https://Somerandonwebsite.com/task"); // 监听新窗口的load事件,等待页面加载完成 newWin.addEventListener('load', function() { // 获取目标输入框元素后赋值 const titleInput = newWin.document.getElementById('titleBox'); if (titleInput) { titleInput.value = "Title created"; } }); }
跨域场景替代方案
如果两个页面不同源,无法直接操作新页面DOM,可以通过URL传参实现:
- 原页面打开页面时把要填充的内容拼接到URL上:
function fillText() { const targetText = encodeURIComponent("Title created"); window.open(`https://Somerandonwebsite.com/task?title=${targetText}`); }
- 在目标页面
https://Somerandonwebsite.com/task的代码中添加逻辑,读取URL参数填充到输入框:
window.addEventListener('load', function() { const params = new URLSearchParams(window.location.search); const title = params.get('title'); if (title) { document.getElementById('titleBox').value = decodeURIComponent(title); } });
内容的提问来源于stack exchange,提问作者Mr.Curious
相关产品推荐
相关产品推荐

