【问题标题】:Getting URL breaks across chrome and firefox跨 chrome 和 firefox 获取 URL 中断
【发布时间】:2019-06-27 18:54:35
【问题描述】:

我试图通过检查我在哪个页面上将背景图像应用到正文元素,然后根据我所在的页面添加一个类(具有背景图像属性),即 index.php,书。 php、library.php 等。

目前,我正在使用 document.location 对象(即 document.location.href),我也尝试过 window.location 对象,但无济于事。

我的问题是 Firefox 返回的 URL 没有尾随哈希 (#) 或问号 (?),而 Chrome 返回带有这些尾随字符的 URL,无论所述字符后面是否有任何其他 URL。

这是我的代码:

 switch(currentFileName()) {
case "index.php": bodyBackGroundFadeIn('home');
  break;
case "library.php": bodyBackGroundFadeIn('library');
  break;
case "store_library.php": 
bodyBackGroundFadeIn('store_library');
  break;
case "book.php": bodyBackGroundFadeIn('book');
  break;
case "store_book.php": bodyBackGroundFadeIn('store_book');
  break;
  }

function currentFileName(){
var href = document.location.href;
return href.substr(href.lastIndexOf("/") + 1);
}


function bodyBackGroundFadeIn(class_name){

 $(document.body).addClass(class_name);
 $(document.body).animate({opacity: 1.0},'600');

}

有没有更好的方法来达到这个效果?我考虑过使用正则表达式来搜索“?”或'#',但如果它不是跨浏览器,我不想搞砸这个。

我也尝试过使用按位运算符来反转一个空的哈希值,以使其在 Firefox 和 Chrome 上工作,但这也不起作用。

这是 Firefox 的输出:

>> document.location.href.substr(href.lastIndexOf("/") + 1);
"index.php" 

这是 Chrome 的输出:

>> document.location.href.substr(href.lastIndexOf("/") + 1);
"index.php?"

还有this 线程,它提供了许多连接和推断字符串的方法,但是没有处理这个特定问题的方法。

【问题讨论】:

  • 所以清理它。
  • 你应该使用 pathName
  • 谢谢@epascarello,非常感谢 :) 我还是 javascript 新手,还有很多东西要学。

标签: javascript url-rewriting


【解决方案1】:

你应该只使用pathname

window.location.pathname.split("/").pop()

【讨论】:

    猜你喜欢
    • 2011-12-10
    • 2012-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多