IE javascript的麻烦
我有一个网站,它主要是为SWFAddress的全速闪现而设计的,因此所有链接都以散列“#”符号结尾(例如:www.site.com/#/folder/image.jpg) 我想将flash切换到完整的HTML,并且不使任何链接失效(因为我在web上留下了很多链接),所以我创建了htaccess文件来控制输入请求。 问题在于哈希“#”符号,因为htaccess文件无法处理它。我在第一个index.php上编写了一段javascript代码 因此,在我加载任何控制器之前,index.php文件从javascript开始删除散列符号,并重定向回不带“#”I in url的站点:IE javascript的麻烦,javascript,html,internet-explorer,Javascript,Html,Internet Explorer,我有一个网站,它主要是为SWFAddress的全速闪现而设计的,因此所有链接都以散列“#”符号结尾(例如:www.site.com/#/folder/image.jpg) 我想将flash切换到完整的HTML,并且不使任何链接失效(因为我在web上留下了很多链接),所以我创建了htaccess文件来控制输入请求。 问题在于哈希“#”符号,因为htaccess文件无法处理它。我在第一个index.php上编写了一段javascript代码 因此,在我加载任何控制器之前,index.php文件从ja
<script type="text/javascript">
var link = location.href;
m = removeHash(link);
if (link != m) {
document.location.href = m;
}
function removeHash(l) {
var unhashedUrl = l;
if (l.indexOf("#") > -1) {
var url_pieces = l.split('/');
var request = url_pieces[url_pieces.length-1];
if(request.indexOf("#") == -1 && request.toLowerCase().indexOf(".jpg") > -1){
unhashedUrl = l.replace('#', "gallery");
}else{
unhashedUrl = l.replace('#/', "");
}
}
return unhashedUrl;
}
</script>
var link=location.href;
m=removeHash(链接);
如果(link!=m){
document.location.href=m;
}
函数removeHash(l){
var unhashedUrl=l;
如果(l.indexOf(“#”)大于-1){
var url_pieces=l.split('/');
var request=url_pieces[url_pieces.length-1];
if(request.indexOf(“#”)==-1&&request.toLowerCase().indexOf(“.jpg”)>-1){
unhashedUrl=l.替换(“#”和“画廊”);
}否则{
unhashedUrl=l.replace(“#/”,“”);
}
}
未经处理的返回;
}
然后所有的php都开始了
Chrome、firefox、Opera、Safari、移动浏览器。。。它们都能完美地工作。但IE(经过测试的IE8和IE9)再次以疯狂告终。看来IE以后不会发射任何JS了。当然,当我从索引控制器中删除JS时,IE也可以正常工作
有什么建议吗?加载页面时,IE控制台中是否有错误?可能
removeHash
函数中的方法不受支持。使用IE开发工具(F12)查找生成的任何错误。IE控制台中没有错误。我已经升级了问题中的javascript代码。问题似乎在头脑中。当我在main index.php中添加任何JS之前的
时,IE可以工作,但我不能这样做,因为在我在php中检查它之前,我不知道该站点是什么语言(“en”或“fr”)(但首先我需要删除JS中的哈希)……好吧,是的,这样做就可以了——如果你没有doctype,那么IE就会进入怪癖模式,这意味着它将缺少很多标准特性,因此,如果任何JS代码失败,也就不足为奇了。因此,您肯定应该始终包含基本的doctype/html/head代码。无论如何,既然这个页面只是重定向到另一个页面,为什么您甚至需要指定lang=''
;只要做。
问题就解决了。我不知道它是否真的有“#”散列标签,我需要先检查一下,所以我还是需要启动JS。。。它重定向回相同的index.php,但不带“#”。至于控制台中的错误:是的,确实存在错误。它在placeholder.js中显示错误,但当我单击它时,它指向第一个标记(这是我的问题)SCRIPT1002:Syntax error placeholder.js,第1行符号1
。