【发布时间】:2015-01-04 09:04:44
【问题描述】:
我有一些 jQuery 代码可以在某些网页上执行一些特定的操作,而不会在其他网页上加载。这是我当前运行上述代码的方法:
if ((window.location.href).indexOf('somewebsite.com') >= 0){
chrome.extension.sendMessage({greeting: "loadscript"});
var stuff = new Stuff();
//run some code
dothiseverytime(withSomeParams);
} else if ((window.location.href).indexOf('someotherwebsite.com') >= 0){
chrome.extension.sendMessage({greeting: "loadscript"});
var stuff = new Stuff();
//run some code
dothiseverytime(withDifferentParams);
} else if
// etc..
我想知道是否可以使用 indexOf 和数组按照 switch case 的方式做一些事情。也许类似于这个伪代码的内容?
someWebsites = ['somewebsite.com','someotherwebsite.com']
function checkTabURL {
switch ((window.location.href).indexOf(someWebsites) >= 0)
case 0 // first site in our list - index 0
var stuff = new Stuff();
// do some stuff
case 1 // second site on our list - index 1
var stuff = new Stuff();
// do some other stuff
case -1 // site isn't on the list
// don't do anything
}
我想最小化我的代码,我认为在这些方面使用 something 也会减少编写的代码量。
由于人们混淆了我需要的内容并提供了相反的内容(根据数组搜索 URL,而不是根据 URL 搜索数组)- 我想澄清一下。
我的数组可能包含“somesite.com/subdir”之类的内容,因此我无法将 URL 与数组匹配 - 我需要将数组与 URL 匹配。我需要查看数组中的任何内容是否在当前 URL 中(然后执行一个案例),而不是相反。
IE:“somesite.com/subdir”是否包含在当前 URL 中?当前 URL 中是否有“someothersite.com”?前者执行case 0,后者执行case 1。如果两者都不是,则为 -1。
【问题讨论】:
-
“有一个真正的 switch/case 语句”是什么意思? developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…。你的第二个问题:基于一个基本条件,如果设置了另一个条件,你必须运行一个方法两次,否则只运行一次?
-
来晚了,我想我弄错了。是的,如果 z & y,我想运行一个方法两次,如果是 y,我想运行一次。但在实际代码中,我在 y 之前的 z 条件之后有更多代码。
-
请阅读您自己的 cmets。有一次你写道:'我要求 Z,然后执行一些代码。然后我检查 Y,但即使 Z 存在,Y 也可能不存在。在这种情况下,我根本不想要 x()。在这里你说:'如果 z & y,我想运行一个方法两次,如果 y,我想运行一次。'
-
我可能只是因为迟到而发疯。你就在这里。我相信您对我的第二个代码部分的解决方案是正确的。
标签: jquery arrays google-chrome-extension switch-statement indexof