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

如何用JavaScript修改window.location.hostname的返回值?

修改页面内window.location.hostname的可行方案

你尝试的几种方法都无法生效,原因如下:

  • 直接声明var window无法覆盖浏览器全局的window对象,完全无效。
  • __defineGetter__是已过时的API,且浏览器对原生window.location有保护机制,禁止直接重写其getter。
  • document.domain仅能设置为当前域名的后缀,无法直接修改为完全无关的域名。

要实现仅在页面JS环境中修改window.location.hostname的显示值,可通过Object.defineProperty结合Proxy对象劫持访问,既自定义hostname,又保留location其他原生属性的功能:

// 保存原始location对象
const originalLocation = window.location;

// 重定义window.location的getter
Object.defineProperty(window, 'location', {
  get() {
    return new Proxy(originalLocation, {
      get(target, prop) {
        // 拦截hostname属性,返回自定义值
        if (prop === 'hostname') {
          return 'domain2.com';
        }
        // 其他属性返回原始值
        return target[prop];
      }
    });
  },
  configurable: true // 允许后续调整该定义
});

测试验证:

alert(window.location.hostname); // 弹出 "domain2.com"
alert(window.location.pathname); // 仍会弹出 "/something"(保留原生路径)

这种修改仅作用于当前页面的JavaScript执行环境,不会改变浏览器地址栏的URL,也不会触发跨域相关限制,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 03:45:34