我目前在我当前的项目中使用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没有触发
但刷新浏览器或再次插入单词后,它现在可以正常工作了。它目前显示注册部分。
如何确保代码window.location.href.indexOf
在第一次尝试时起作用,或者不再刷新浏览器。该网站建立在一个角度框架
答案 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()
希望它有所帮助。