window.location.href.indexOf无法正常工作

时间:2017-05-09 10:33:47

标签: javascript html

我目前在我当前的项目中使用window.location.href.indexOf。我注意到它似乎没有正常工作。例如,我做的这段代码。

$(document).ready(function () {

  //Show Sign Up drawer if user clicks on referral link
  //It will show the Sign Up drawer once the word "referral" is found in the URL
  if (window.location.href.indexOf("?referral") > -1) {
    console.log('Sign Up Drawer');
    $(".header-form-container.signup").addClass("show"),
  }
});

如果在URL中找到单词referral,则此代码的作用是在元素中添加一个类。然后插入的添加类将滑动注册抽屉。以下是测试期间发生的事情。

在我的第一次测试中,我尝试在网址中插入单词referral。输入单词并按下Enter键后,我试图运行的javascript没有触发

enter image description here

但刷新浏览器或再次插入单词后,它现在可以正常工作了。它目前显示注册部分。

enter image description here

如何确保代码window.location.href.indexOf在第一次尝试时起作用,或者不再刷新浏览器。该网站建立在一个角度框架

2 个答案:

答案 0 :(得分:2)

如果您只更改 #符号之后的网址,则该页面不会重新加载,因为您只是更改了网址的锚点部分。<登记/> 包含在$(document).ready(function () { ...中的代码只会在页面加载时运行一次。

您要做的是为路由更改事件添加一个侦听器,并在该处理程序中运行您的代码,如下所示:

$rootScope.$on("$routeChangeSuccess", function() {
  if (window.location.href.indexOf("?referral") > -1) {
    console.log('Sign Up Drawer');
    $(".header-form-container.signup").addClass("show"),
  }
});

答案 1 :(得分:0)

它不起作用,因为当页面加载时你的脚本(例如:main.js)只执行一次

您可能希望使用window.history来操纵浏览器历史记录。您可以使用pushState()

更新查询字符串

History API

希望它有所帮助。