更改过滤器以获取带有和不带有其他url查询字符串的文件

时间:2019-03-19 13:53:53

标签: javascript

我想从页面获取单个CSS文件,所以我这样做:

let sheets = window.document.styleSheets;
var mysheet = Array.from(sheets).filter(mysheet => 
    mysheet.href == PAGERL+'/css/my_wanted_file.css');

结果,我获得了“ my_wanted_file.css”文件的完整路径。

现在我有这种情况,原因是重新加载功能,所需文件的名称看起来像"my_wanted_file.css?t=timestamp"

我在上面的代码中需要更改的内容是,无论是否包含“?t = timestamp”部分,此代码都将输出所需的文件?

非常感谢。

4 个答案:

答案 0 :(得分:2)

如果您对完整 URL不感兴趣的话,就不要看href了吗??

JavaScript为您提供了一种仅查看https://developer.mozilla.org/en-US/docs/Web/API/URL#Properties

的URL的特定部分的方法。
mysheet.pathname == '/css/my_wanted_file.css'

答案 1 :(得分:1)

尝试使用OR ||运算符:

var mysheet = Array.from(sheets).filter(mysheet => 
    { 
      return mysheet.href == PAGERL+'/css/my_wanted_file.css'
         || mysheet.href == '/css/my_wanted_file.css'
    });

更新:

如果要检查数组是否包含诸如/css/my_wanted_file.css/css/my_wanted_file.css?t=timestamp之类的值:

let timestamp = 'yourTimeStamp Here';
var mysheet = Array.from(sheets).filter(mysheet => 
    { 
      return mysheet.href == PAGERL+'/css/my_wanted_file.css'
         || mysheet.href ==  PAGERL+`/css/my_wanted_file.css?t=${timestamp}`
    });

答案 2 :(得分:1)

经过很多好的建议,我决定以一种简单的方式解决问题。

用问号分隔网址,然后使用它:-)

if(mysheet.href!=undefined && mysheet.href.split('?')[0] == PAGERL+'/css/my_wanted_file.css'){ return mysheet.href; }

仅此而已;-)

答案 3 :(得分:0)

querySelector与包含attribute selector一起使用

document.querySelector('link[href*="/css/my_wanted_file.css"]')