在Javascript中取消重定向?

时间:2012-07-05 02:18:15

标签: javascript html css

我把它添加到我的页面的头部:

<script type="text/javascript">

if (screen.width <= 800) {
    window.location = "http://m.domain.com";
}

</script>

我的移动版本上有一个名为“主站点”的按钮。 我希望按钮转到我的主站点,但不会重定向回我的移动网站。我该怎么做?

另外,我只想让他们去那里一次。因此,下次他们输入我的网站名称时,我希望它将它们带到移动网站

4 个答案:

答案 0 :(得分:2)

如果您已有按钮进入主站点。只需将主站点链接到该按钮即可。你可以做的额外的是,使用url参数来检查并强制主布局。像

这样的东西
<a href="http://www.domain.com?forcelayout=main">Main site</a>

如果要强制使用主布局,请检查此参数。否则,当前使用的脚本将自动执行您想要执行的操作。


使用以下函数读取查询字符串。 [Source]

function getParameterByName(name) {
    var match = RegExp('[?&]' + name + '=([^&]*)')
                    .exec(window.location.search);
    return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
}

接下来,您可以在逻辑中使用它,如下所示:

if (screen.width <= 800 && getParameterByName('forceLayout') != 'main') {
    window.location = "http://m.domain.com";
}

答案 1 :(得分:1)

您可以检查document.referrer

<script type="text/javascript">
if (screen.width <= 800 && document.referrer.indexOf('http://m.domain.com') != 0) {
    window.location = "http://m.domain.com";
}
</script>

答案 2 :(得分:1)

当有人点击您的&#34;主网站&#34;按钮,在重定向到主站点之前,创建一个&#34; MobilOptOut&#34; cookie,然后在screen.width if语句中测试该cookie的存在。

答案 3 :(得分:0)

客户端需要管理用户想要查看的当前视图的状态。由于HTTP是无状态协议,因此您可以使用cookie来保持用户在HTTP请求中的选择。

当用户单击按钮以显示主版本时,请删除cookie作为click事件的一部分。同样,当用户想要查看移动版本时,将cookie设置为所需的值。由于有许多方法可以使用可能依赖于库的JavaScript来操作cookie,因此下面是您的页面应该执行的伪代码。

// Pseudocode:
// Sets a cookie named "view" with the value "mobile"
function setMobileView() {
    Cookie.set("view", "mobile");
}
mobileViewButton.onclick = setMobileView;

// Deletes the cookie named "view"
function setMainView() {
    Cookie.delete("view");
}
mainViewButton.onclick = setMainView;

以下是重定向逻辑的伪代码:

// Pseudocode for deciding the view to display
if (view === "mobile") {
  location.href = "http://m.domain.com";
}