有没有一种方法可以让JavaScript链接在IE中打开?

3

我有一个链接,使用JavaScript提交表单,就像这样:

<a href="javascript:document.some_form.submit()">some link</a>

然而,这将指向一个由供应商提供的应用程序,当然只能在IE中运行。是否有任何方法使得如果用户使用不同的浏览器,该链接可以在IE中打开?

4个回答

10

如果不将编译好的代码放在用户的机器上,那么很可能不行。这将要求您指定一个特定的程序来运行操作系统,这将违反市场上大多数浏览器都存在的并且应该存在的安全限制。

您可能能够为每个主要浏览器厂商创建插件,以拦截链接并在IE中打开它,但这变得很繁琐,因为每个浏览器都有不同的模型。除此之外,您还必须在每台机器上安装插件,用户可能没有兴趣这样做。

这里最好的选择是告知用户必须在IE中浏览网站,并尽可能与供应商合作,使其在其他浏览器中运行。

另一种可能性是,您可以在客户端程序中同时托管您的应用程序和供应商应用程序,其中使用的是嵌入式WebBrowser控件,即IE。


4
没有,这会带来严重的安全风险-一个利用Internet Explorer漏洞的网站可以通过这种方式感染使用Mozilla Firefox的用户。
只需提醒用户这是一个需要IE的外部网站(可能使用用户代理嗅探避免在已经使用IE的情况下显示它)。

1

我认为不行,因为你需要在客户端计算机上启动/激活一个程序。但是,你可以重定向提交并警告用户如果他不在IE中,则在这种情况下返回false。链接的更好语法可能是:

<a href="#dummy" onclick="document.some_form.submit()">some link</a>

0

你可以做的事情(我也已经这么做了)是,如果点击链接的人不使用Internet Explorer并且打开了一个新窗口,则使链接无法工作,显示一个DIV或弹出一个alert()通知他们必须使用Internet Explorer才能访问目标网站。

例如:

<a href="/enablejavascript.html"
    onclick="
        if (window.external && 'undefined' !== typeof window.external.AddFavorite) {
            document.forms['some_form'].submit();
        } else {
            alert('You must be using Internet Explorer to use this website.');
        }
        return false;
    ">some link</a>

window.external.AddFavorite 在我所知道的范围内只能在Internet Explorer中使用,因此使用它来检测IE应该是相当安全的。您还可以检查navigator.userAgent以获取MSIE,但是一些浏览器(如Opera)可能会伪装IE用户代理。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接