如何让iframe在书签小工具触发的当前页面运行(解决新标签问题)
解决方案:在当前页面嵌入指定网站的iframe书签代码
原来的代码之所以失效,是因为window.open(url, '_self')会直接让当前页面跳转到目标网址,后续创建iframe的代码根本没机会运行。要实现在当前页面嵌入iframe,直接操作当前页面的DOM就行,不用跳转。
修改后的书签代码如下:
javascript:(function() { const url = prompt("请输入要打开的网站地址:"); if (!url) return; // 清空当前页面内容,避免原有元素干扰 document.body.innerHTML = ''; document.documentElement.style.height = '100vh'; document.body.style.margin = '0'; document.body.style.height = '100%'; // 创建并配置iframe const iframe = document.createElement('iframe'); iframe.style.border = 'none'; iframe.style.width = '100%'; iframe.style.height = '100%'; // 自动补全https协议,避免输入不带协议的地址出错 iframe.src = url.startsWith('http') ? url : `https://${url}`; document.body.appendChild(iframe); })();
关键改动说明:
- 删掉了
window.open,直接操作当前页面的document对象,不会跳转页面 - 增加了输入判断,用户取消弹窗时直接终止代码执行
- 自动补全https协议,用户输入比如
baidu.com也能正常加载 - 清空当前页面原有内容,让iframe占满整个页面
内容的提问来源于stack exchange,提问作者Colton Novak
相关产品推荐
相关产品推荐

