【问题标题】:Using userAgent to determine correct download link使用 userAgent 确定正确的下载链接
【发布时间】:2013-10-26 03:05:50
【问题描述】:

我试图找到一个简单的 userAgent 脚本,它会显示一个下载图像,单击该图像会下载我们的安装程序文件。

如果用户在mac上,则需要显示指向install.dmg的图像,而在windows上需要指向install.msi,最后是windowsxp指向install.exe

我了解使用 userAgent 请求不是最佳做法,但是我们的网站仅由未伪造其代理 ID 的选定用户组访问。大多数用户都非常..“简单”..大多数时候他们需要帮助来打开他们的计算机。

我发现下面的脚本会自动下载有问题的文件,但是这里的管理人员不希望它自动下载,而是显示一个可单击以下载正确安装文件的 download.png。

<script type="text/javascript">// <![CDATA[
{
if((navigator.userAgent.indexOf('Win') != -1)
{ window.location.href="resources/install.msi"; }
else if(navigator.userAgent.indexOf('Mac') != -1)
{ window.location.href="resources/install.dmg"; }
else { window.location.href="resources/install.msi"; }
}
// ]]></script>

有什么想法吗?我不想每次安装都重定向到不同的页面,例如为 Mac 用户提供登录页面,为 Windows 8 用户提供登录页面等。只需显示适合其操作系统的链接 png 文件.

我在想一个 document.write 语句,但不知道如何显示可点击的图像。

注意事项:

  • 对移动版本没有要求,例如 iPhone 等。
  • 我们正在使用基于 Joomla 的主题,我已将 过滤器列入白名单。
  • 这是一篇单独的文章,没有重定向或任何时髦的东西。

【问题讨论】:

    标签: html windows macos operating-system


    【解决方案1】:

    您可以使用 document.write 执行您所要求的操作。只需将这段代码放在您想要下载图像的任何位置即可。

    <script type="text/javascript">// <![CDATA[
        var WINDOWS_DOWNLOAD_IMAGE = "image_win.png";
        var MAC_DOWNLOAD_IMAGE = "image_mac.png";
    
        var WINDOWS_INSTALLER_FILE = "insall.exe"
        var MAC_INSTALL_FILE = "install.dmg"
    
        var ua_string = navigator.userAgent;
    
        if((ua_string.indexOf('Win') != -1){
            //The OS is Windows.
            document.write('<img src="' + WINDOWS_DOWNLOAD_IMAGE + '" href="' + WINDOWS_INSTALLER_FILE + '" />');
        }
        else if(ua_string.indexOf('Mac') != -1){
            //The OS is Mac.
            document.write('<img src="' + MAC_DOWNLOAD_IMAGE + '" href="' + MAC_INSTALLER_FILE + '" />');
        }
        else{
            //Other OS.
            document-write("<h1>Sorry. We don't support your OS.</h1>");
        }
    // ]]></script>
    

    大写的变量是配置变量。

    编辑: 对不起。我混淆了“()”的- //

        var WINDOWS_INSTALLER_FILE = "insall.exe"
        var MAC_INSTALL_FILE = "install.dmg"
    
        var ua_string = navigator.userAgent;
    
        if(ua_string.indexOf('Win') != -1){
            //The OS is Windows.
            document.write('<img src="' + WINDOWS_DOWNLOAD_IMAGE + '" href="' + WINDOWS_INSTALLER_FILE + '" />');
        }
        else if(ua_string.indexOf('Mac') != -1){
            //The OS is Mac.
            document.write('<img src="' + MAC_DOWNLOAD_IMAGE + '" href="' + MAC_INSTALLER_FILE + '" />');
        }
        else{
            //Other OS.
            document-write("<h1>Sorry. We don't support your OS.</h1>");
        }
    // ]]></script>
    

    编辑 2:

    工作代码:

    <script type="text/javascript">// <![CDATA[
        var WINDOWS_DOWNLOAD_IMAGE = "image_win.png";
        var MAC_DOWNLOAD_IMAGE = "image_mac.png";
    
        var WINDOWS_INSTALLER_FILE = "insall.exe"
        var MAC_INSTALLER_FILE = "install.dmg"
    
        var ua_string = navigator.userAgent;
    
        if(ua_string.indexOf('Win') != -1){
            //The OS is Windows.
            document.write('<a href="' + WINDOWS_INSTALLER_FILE + '"><img src="' + WINDOWS_DOWNLOAD_IMAGE + '"/></a>');
        }
        else if(ua_string.indexOf('Mac') != -1){
            //The OS is Mac.
            document.write('<a href="' + MAC_INSTALLER_FILE + '"><img src="' + MAC_DOWNLOAD_IMAGE + '"/></a>');
        }
        else{
            //Other OS.
            document-write("<h1>Sorry. We don't support your OS.</h1>");
        }
    // ]]></script>
    

    【讨论】:

    • 我已经在页面上尝试过这段代码,但它似乎不起作用。我已经用正确的 URL 替换了 image_win.png 和其他文件,并且我通过在浏览器中手动输入它们来确认它们正在工作,但是没有显示下载图像?此处链接到相关页面:candata.com/…
    • 我不能消除用于识别图像/文件的 var 部分,而只需手动指定图像/文件的 url 吗?他们永远不会改变。只保留 if/else 语句(以及 ua_string 的 var)?
    • 我发现了问题。给我一点时间。 :)
    • 哦,我很高兴它做到了。我在访客机器上,无法测试我的代码。
    • 谢谢 - 搞定了。数字表明,一旦我的老板看到更新和工作的代码,他决定完全走另一条路,并决定为 mac 和 windows 提供两个静态页面,这将需要一个重定向脚本,基本上让你现在的辛勤工作对我来说毫无用处.. 无论如何谢谢:)
    猜你喜欢
    • 2016-04-28
    • 2018-04-17
    • 1970-01-01
    • 2021-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多