脚本只有在刷新后才能工作
script works only after refresh
在第一页中,我有一个带有链接的图像,您可以点击它:
<div style="width: 97px; height: 130px;">
<a href="objects_lost.html?obj=images/dog.png">
<div>
<img src="images/dog.png" alt="" style="width: 100%; height: 100%;">
<p style="color: black; margin-top: 0px;">DOG</p>
</div>
</a>
</div>
当你点击它时,会打开一个新页面,显示你点击的图像。但它只在一次刷新后工作。
<img src="" id="image"/>
<script type="text/javascript">
function whatImg() {
var str = getUrlVars()["obj"];
document.getElementById('image').src = str;
}
function getUrlVars() {
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for(var i = 0; i < hashes.length; i++)
{
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
whatImg();
</script>
有什么帮助吗?我使用JQuery Mobile
如果哈希发生更改,脚本将不会再次启动。您需要添加一个事件侦听器,如:
$(window).on("hashchange",function() {
whatImg();
});
问题是您的JavaScript在页面加载完成之前就已运行。在刷新时,页面会从本地缓存加载(即更快),并且在脚本运行之前,图像元素已经准备好。如果您在本地服务器上运行代码,您可能会注意到,由于HTML的快速加载,它在第一次尝试时就可以工作。
正确的解决方案是让代码在加载后运行。在jQuery中,您可以这样做:
$( function() {
whatImg();
});
这或多或少是的标准jQuery快捷方式
$(window).load( function () {
whatImg();
});
应该注意的是,建议使用hashchange
的答案是有效的,因为hashchange
在第一页加载时触发。您的URL中实际上没有哈希。正确的解决方案是让脚本在加载后运行。
相关文章:
- 刷新后,setTimeout将工作或不工作
- .html()不会'页面更改或刷新时无法工作
- AngularJS控制器没有'第一次刷新页面后无法工作
- .addClass不工作(刷新时被删除)
- Javascript don'刷新页面后无法工作-为什么
- Kml层在刷新后工作正常,但给定typeError:无法读取属性getMap.第一次加载时
- jQuery AJAX刷新没有'不能在iPhone上工作
- Javascript在刷新后停止工作
- 页面刷新时脚本无法正常工作
- 为什么 jquery toggle() 方法在页面不刷新的情况下无法正常工作
- ngCookie在我刷新页面后无法正常工作
- Angular + requireJS:快速刷新页面会导致页面在 Chrome 中停止工作
- Jquery 日期选择器仅在页面刷新后工作
- 将公司名称绑定到更新面板中的下拉列表,自动完成文本框工作,但每次页面刷新时
- 防止刷新后返回不工作
- 轮播在初始重定向时中断,但在刷新时工作正常
- Javascript仅在第一次刷新后工作
- Javascript在页面刷新后工作,不知道解决方案
- JQuery 函数在页面加载时未触发,它仅在我刷新页面或再次重新访问同一页面后才能工作
- Rails 应用程序 - jQuery Document.ready在单击链接时不调用,但在新选项卡中打开或刷新时工作