在Polymer 1.1中使用window.location.href的正确方法
Correct way to use window.location.href in Polymer 1.1
在索引的头部,我有:
// hashbang is set to true in routing.html
<script type="text/javascript">
if (window.location.href === "/users") {
console.log('Hey you!');
}
</script>
我需要实现一些基于window.location
的类绑定,但我正在测试以确保它在聚合物中起作用。不是吗?我不为我自己工作。当我转到localhost:3000/#!/users
时,注意控制台
更新:
如果你使用的是带有Polymer starter kit的page.js,那么你的应用的所有页面都会在第一次加载时加载。
在这个入门工具包中,使用page .js更改路由将显示需要的页面,并添加display: none
来隐藏其他页面。
例如,在您的app/index.html
中,您应该有这样的内容:
<iron-pages attr-for-selected="data-route" selected="{{route}}">
...
<section data-route="home">
...
</section>
<section data-route="users">
...
</section>
<section data-route="user-info">
...
</section>
...
</iron-pages>
iron-pages
元素的route
参数由Page.js在app/elements/routing.html
:
page('/', function () {
app.route = 'home';
});
page('/users', function () {
app.route = 'users';
});
page('/users/:name', function (data) {
app.route = 'user-info';
app.params = data.params;
});
page('/contact', function () {
app.route = 'contact';
});
因此,如果路由匹配/users
,那么Page.js将设置app.route = 'users';
,并且iron-pages Polymer元素将显示data-route="users"
的部分并隐藏其他部分,而无需重新加载任何内容,因此无需重新加载脚本。
但实际上,因为你使用的是Page.js,它会更容易将你的代码集成到routing.html文件中,像这样:
page('/users', function () {
app.route = 'users';
console.log('Hey you!');
});
page('/users/:name', function (data) {
app.route = 'user-info';
app.params = data.params;
console.log('Hey ' + data.params.name);
});
page('/contact', function () {
app.route = 'contact';
console.log('Contact page');
});
您可以从尝试调试开始,例如,尝试记录窗口href:
console.log(window.location.href);
应该返回:
http://localhost:3000/#!/users
然后你可以更深入地了解你的问题是什么!;)
事实上,window.location.href
给了你完整的URL,它应该这样做(与聚合物或不)。
另一方面,window.location.hash
返回从#
字符开始的url中的所有内容,给您#!/users
,因此您可以尝试:
<script type="text/javascript">
// Slice(2) to get rid of '#!'
if (window.location.hash.slice(2) === "/users") {
console.log('Hey you!');
}
</script>
注:
如果在#
之后有查询参数,如下所示:localhost:3000/#!/users?number=42&name=value
window.location.href
将变成#!/users?number=42&name=value
如果您还想在这种情况下摆脱查询参数?number=42&name=value
,您可以这样写:
<script type="text/javascript">
if (window.location.hash.slice(2).split("?")[0] === "/users") {
console.log('Hey you!');
}
</script>
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- .attr(“href”) 的问题!解决此问题的简单方法
- 使用 jQuery 从锚点中删除 href 的最干净方法
- Jquery Ajax调用,以便在单击a href时将数据发送到该方法
- j查询干净的方法来获取href数组并重建它
- 如何在 jquery attr() 方法中使用 “javascript:window.location.href” 的
- location.href 属性与 location.assign() 方法
- 如何将单击方法添加到无序列表中的 href 链接
- HTML:一种防止在左下角显示href的方法 谷歌浏览器.
- firefox中Href标记的解决方法
- jQuery:检查href属性是否有效的简单方法
- 寻找搜索浏览器cookie的方法并确定href="邮件收件人:"链接
- Window.Location.Href或重定向_self的其他方法不起作用(MVC视图)
- 重新加载方法:响应文本与窗口.位置.href(1 次旅行与 2 次)
- 是否有一种方法来显示使用javascript中的if / else语句的href链接
- 在Polymer 1.1中使用window.location.href的正确方法
- 窗口.location.href和窗口.JavaScript中的open()方法
- 如何在firefox中动态点击一个href链接?预期的方法只适用于IE
- 对象函数(){location.href=this.options.url);没有方法'apply'
- 在ng-repeat上提供不同href URL的更简洁的方法