Jquery 使用click()模拟url/href并创建错误位置

Jquery 使用click()模拟url/href并创建错误位置,jquery,firefox,click,location,Jquery,Firefox,Click,Location,我创建了一个列表,其中包含一些应该可以单击的元素。它不是一个简单的文本,而是一个表格行,所以我想使用单击功能 我就是这样做的: function PrepareServerItem(item, server) { item.attr("id", "srv" + server.id); if (server.status == 0) item.click(function() { window.location = "cndr://" + server.url; }); r

我创建了一个列表,其中包含一些应该可以单击的元素。它不是一个简单的文本,而是一个表格行,所以我想使用单击功能

我就是这样做的:

function PrepareServerItem(item, server)
{
    item.attr("id", "srv" + server.id);
    if (server.status == 0) item.click(function() { window.location = "cndr://" + server.url; });
    return item;
}

function CreateServerItem(server)
{
    return PrepareServerItem(serverItem.clone(true), server);
}

[....]
$("#someid").before(CreateServerItem(server));
cdnr是由外部程序定义的url协议。这种方法在chrome上仍有一个错误-

得到cndr://JCMCFCMCCCMFJSRDBBF 未定义未定义

但是它用正确的参数打开了外部程序,但我在firefox中遇到了以下错误:

未捕获异常:[异常。。。 故障nsresult:0x80004005 NS\u错误\u故障位置:JS frame::我的internet地址:: 匿名::第186行数据:否]


是否更改位置会删除当前文档以及脚本需要的某些内容?如何解决此问题?

您是否尝试过使用window.open,如果您担心使用它会带来更好的结果。location?window.open可以正常工作,但不会显示错误消息,但会打开一个新选项卡。CDNR url协议的链接在两种浏览器上都有效吗?啊。我认为现在的浏览器如果意识到它实际上是一个外部应用程序,或者是一个下载或类似的应用程序,就不会真正打开标签。如果您不需要它来打开新选项卡,也不需要它来替换当前页面,那么隐藏iframe可能适合您,即创建隐藏iframe,在其中加载url,浏览器将其识别为外部应用程序并打开它,您的页面不会被卸载,您可以删除iframe或将其留到下次单击时使用。否,必须先把它变成一个答案。