我正在尝试通过使用与这些应用程序相关联的自定义协议名称从浏览器启动3个应用程序。在stackoverflow上启动的其他线程可能看起来很熟悉,我相信它们对解决这个问题没有帮助,所以请先不要关闭这个线程,它需要与其他线程中建议的不同的方法。
示例:
ts3server://a.b.c?property1=value1&property2=value2
...
...要启动这些应用程序,我会这样做
location.href = ts3server://a.b.c?property1=value1&property2=value2
location.href = ...
location.href = ...它可以在FF中工作,但不能在Chrome中工作
我认为可以通过优化写操作的数量来实现,而实际上只有最后一个更改存在。
所以我这样做了:
function a ()
{
var apps = ['ts3server://...', 'anotherapp://...', '...'];
b(apps);
}
function b (apps)
{
if (apps.length == 0) return;
location.href = apps[0]; alert(apps[0]);
setTimeout(function (rest) {return function () {b(rest);};} (apps.slice(1)), 1);
}但这并没有解决我的问题(实际上只考虑了第一个location.href分配,即使其他调用在第一个调用之后发生的时间足够长(由于将超时延迟改为10000),应用程序也不会启动(显示警报)。
如果我尝试单独访问每个URI,应用程序就会启动(首先我通过单击一个按钮来调用location.href = uri1,然后再次单击另一个按钮来调用location.href = uri2 )。
替换:
location.href = ...通过以下方式:
var form = document.createElement('form');
form.action = ...
document.body.appendChild(form);
form.submit();也没有帮助,也没有:
var frame = document.createElement('iframe');
frame.src = ...
document.body.appendChild(frame);有没有可能做我想做的事?该怎么做呢?
编辑:
改写过的摘要
我想启动多个应用程序后,一次点击链接或按钮类似的元素。我希望通过启动与自定义协议关联的应用程序来实现这一点……我会保存一个链接列表(在每个链接中使用一种协议),并且我会尝试对列表中的所有项执行"location.src = link“。当与'for‘一起使用时,它只优化赋值一次(最后一个值),所以我让这个函数类似于带延迟的递归函数(它消除了优化,当列表在每次调用之前被切片时,实际上强制3次不同的location.src = listhead调用,以便将所有链接都考虑在内,并将它们分配给location.src。这一切在Mozilla Firefox中都工作得很好,但在google中,在第一次赋值之后,其余的赋值就会失效(它们可能会被执行,但不会触发相关的应用程序启动)。
发布于 2012-02-18 01:42:55
你在元素循环中遇到麻烦了吗?如果是这样,请尝试使用for..in语句here
还是你在导航上有困难?如果是这样,试试window.location.assign(new_location);
编辑你也可以使用window.location = "...";
编辑Ok所以我做了一些工作,这是我得到的。在这个例子中,我打开了一个随机的黑桃A链接。这是一种自定义协议。单击here,然后单击“单击我”。注释显示JSFiddle调试器发现错误的位置。
https://stackoverflow.com/questions/9285550
复制相似问题