You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让prompt指定网站在当前页面的iframe中运行?

问题描述

我一直尝试让通过prompt输入的网站在iframe中运行,但不知如何操作。现有如下JavaScript代码:

(function() {
  let url = prompt("what site do you want to open?");
  let win = window.open(url, '_self');
  win.document.body.style.margin = '0';
  win.document.body.style.height = '100vh';
  var iframe = win.document.createElement('iframe');
  iframe.style.border = 'none';
  iframe.style.width = '100%';
  iframe.style.height = '100%';
  iframe.style.margin = '0';
  iframe.src = url;

  win.document.body.appendChild(iframe);
})();

现咨询:如何让该iframe在当前所在网站(如谷歌云盘)中运行?

解决方案

你的代码核心问题是用了window.open(url, '_self')——这会直接替换当前页面跳转到目标网站,根本没法在原网站环境里嵌入iframe。要在当前页面里添加iframe,直接操作当前页面的document对象即可,不需要新开窗口。

修改后的代码:

(function() {
  const url = prompt("请输入要打开的网站地址:");
  if (!url) return; // 处理用户取消输入的情况

  // 可选:清空当前页面原有内容,让iframe占满整个页面
  document.body.innerHTML = '';
  
  // 配置body样式,确保iframe能铺满页面
  document.body.style.margin = '0';
  document.body.style.height = '100vh';
  document.body.style.overflow = 'hidden';

  const iframe = document.createElement('iframe');
  iframe.style.border = 'none';
  iframe.style.width = '100%';
  iframe.style.height = '100%';
  iframe.src = url;

  // 将iframe添加到当前页面的body中
  document.body.appendChild(iframe);
})();

关键说明

  • 移除window.open调用,直接操作当前页面的document,这样iframe就会嵌入在原网站的页面内
  • 增加了用户取消输入的判断,避免空URL导致的报错
  • 如果不想清空原网站内容,删掉document.body.innerHTML = '',同时调整iframe的样式(比如设置固定宽高、定位),把它放在页面的指定位置即可

注意事项

不是所有网站都能被嵌入iframe,很多主流网站(如谷歌、Facebook)设置了X-Frame-Options或Content-Security-Policy响应头,禁止自身被第三方页面通过iframe嵌入,这种情况代码无法生效。

内容的提问来源于stack exchange,提问作者Colton Novak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 06:45:37