我的JavaScript文件中有一个脚本,我需要打开一个已设置哈希的新文件,如:
function search(queryString){
window.location.href = "dosome.php#" + queryString
}
因为dosome.php是我拥有搜索所有脚本的页面......
我知道这听起来像是黑客,但我不能花更多的时间重建一切。我只想暂时修复它。
它适用于Firefox和Chrome,但出于某种原因,它在Safari中不起作用 - 它不会使用散列发送URL。 Safari发送:
domain.com/dosome.php
而不是
domain.com/dosome.php#queryvalues
可能是什么问题?
答案 0 :(得分:5)
如果dosome.php
上的服务器进行了某些重定向,则不会保留哈希值,至少在Safari 4和IE8上是这样。 Chrome和Firefox运行良好。
为了对此进行测试,请尝试在Safari的地址栏中输入网址http://yourdomain.com/...dosome.php#...
,看看Safari是否会丢失#
。 (使用w {o www
进行测试,即使是简单的www重定向也会丢失#
。)
如果是这种情况,那么您无法在服务器端执行任何操作,因为#...
未发送到服务器;这是客户在导航期间不应该失去它的。
答案 1 :(得分:1)
这是从同一页面完成的吗? dosome.php是什么意思?
然后尝试使用location.hash,
location.hash = "#somestring";
答案 2 :(得分:1)
我有类似的问题。
以下代码在Safari中的iPhone 5上失败:
window.location.href = 'http://example.com/result#somehash'
Safari正在重定向到http://example.com/result/
它在Chrome中可以在同一部手机和桌面上正常使用。
我注意到它正在向前添加正斜杠,并想知道在哈希之间添加正斜杠是否有效。
确实如此!
我将代码更改为此代码并且有效:
window.location.href = 'http://example.com/result/#somehash'
注意哈希之前的/。