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

Webnode项目中window被替换为wnd.fe,如何获取URL参数?

解决Webnode中window被替换为wnd.fe的URL参数获取问题

能否阻止替换行为?

Webnode将window替换为wnd.fe是平台服务器端的内置代码改写机制,属于平台限制,普通用户无法直接阻止或修改这一行为。

替代方案

方案1:用self替代window

在浏览器环境中,self是window的别名,Webnode通常不会对该关键字进行替换。修改后的代码如下:

<div id="text"></div>
<script>
const urlParams = new URLSearchParams(self.location.search);

if (urlParams.get('collection') === 'zastery'){
    document.getElementById('text').innerHTML = 'Text to show';
}else{
    document.getElementById('text').innerHTML = ''
}
</script>

方案2:使用document.location获取参数

document.location与window.location指向同一个对象,Webnode一般不会改写document相关属性,直接使用即可:

<div id="text"></div>
<script>
const urlParams = new URLSearchParams(document.location.search);

if (urlParams.get('collection') === 'zastery'){
    document.getElementById('text').innerHTML = 'Text to show';
}else{
    document.getElementById('text').innerHTML = ''
}
</script>

方案3:手动解析URL参数

如果上述方法失效,可完全不依赖内置对象,手动解析URL参数:

<div id="text"></div>
<script>
// 手动解析URL参数的函数
function getUrlParam(name) {
    const url = self.location.href;
    name = name.replace(/[\[\]]/g, '\\$&');
    const regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)');
    const results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return decodeURIComponent(results[2].replace(/\+/g, ' '));
}

if (getUrlParam('collection') === 'zastery'){
    document.getElementById('text').innerHTML = 'Text to show';
}else{
    document.getElementById('text').innerHTML = ''
}
</script>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 12:48:21