【问题标题】:Button click not triggering javascript function in Chrome but working fine in IE按钮单击不会触发 Chrome 中的 javascript 功能,但在 IE 中可以正常工作
【发布时间】:2016-12-08 16:30:16
【问题描述】:

在 Chrome 中单击按钮不会触发 javascript 函数(InsertRecord()),但在 IE 中可以正常工作。

<input id="submit" type="button" value="Request Access" onclick="InsertRecord()" style="width:160px;"/>


function InsertRecord()
    {
        var txtUserName = document.getElementById('txtUserName').value;
        var txtDept = document.getElementById('ddlDept').value;
        var txtClass = document.getElementById('txtClass').value;
        var txtRole = document.getElementById('ddlRole').value;
        var txtAccess = document.getElementById('ddlAccess').value;
        if (txtUserName.length != 0 || txtDept.length != 0 || txtClass.length !=0 || txtRole.length !=0 || txtAccess.length !=0)
        {
            var connection = new ActiveXObject("ADODB.Connection");
            var connectionstring = "Data Source=dvuksdcwsql001;Initial Catalog=RP_5500_AppDB;Persist Security Info=True;User ID=CPT_DEV;Password=Cpt%100@123;Provider=SQLOLEDB";
            connection.Open(connectionstring);
            var rs = new ActiveXObject("ADODB.Recordset");
            rs.Open("insert into Range_Plan_Access values('" + txtUserName + "','" + txtDept + "','" + txtClass + "','" + txtRole + "','" + txtAccess + "')", connection);
            alert("Access Requested Successfully!");            

            connection.close();
        }
        else
        {
            alert("Please enter a value for User Name \n Department \n Class \n Role \n Access Required!");
        }
    }  

你能告诉我这里的问题吗?

谢谢,

【问题讨论】:

  • 您好 Angelos,您能告诉我如何在 Chrome 中运行它吗?
  • 检查我更新的答案,我想我已经找到了一种方法来解决您的问题,而无需更改任何现有代码。
  • 如果您发现任何答案有帮助,请记得点赞并接受最能帮助您解决问题的答案!

标签: javascript html google-chrome internet-explorer


【解决方案1】:

问题在于ActiveXObject() 调用,因为它们仅在 IE 中受支持。 Chrome 使用称为 NPAPI 的不同插件架构。有一个跨浏览器插件框架,Firebreath,可能对你有用。

更新:经过一番搜索,我还在 Google Chrome 帮助论坛上找到了this discussion,其中指出IE Tab for Google Chrome 可能会让您现有的代码正常运行。试一试!

【讨论】:

    【解决方案2】:

    ActiveX 仅在 IE 中受支持。

    我认为你必须避免这种使用,因为你在客户端暴露你的数据库,所以任何人都可以操纵你的数据库。

    这只是我的意见。避免使用 ActiveX 来完成这项工作。

    创建一个网络服务来完成这项工作。

    希望对你有帮助。

    【讨论】:

      【解决方案3】:

      Chrome 不支持 ActiveX。您不应该通过浏览器连接到数据库,您应该有一个连接到数据库的服务器端 API。你正在尝试做的事情很糟糕!

      【讨论】:

      • 嗨,阿德兰,谢谢。它只是一个用于演示目的的单页应用程序,我现在不想创建 API。你能告诉我解决方法吗?
      • 没有变通办法,Chrome 不支持 ActiveX。您不会让 Chrome 创建 ADO 数据库连接。您可以非常快速地创建一个 API。
      • @AdrianBrand 实际上可能有一种解决方法(如我的回答中所述),尽管它是最终用户应该安装的东西,而不是开发人员可以做的事情。
      • 为什么要搞这些呢?创建 API 是正确的方法,而且非常简单。
      猜你喜欢
      • 2015-02-03
      • 1970-01-01
      • 2018-04-15
      • 2016-04-05
      • 1970-01-01
      • 2012-05-21
      • 2018-07-15
      • 2020-08-31
      • 2016-01-09
      相关资源
      最近更新 更多