【问题标题】:Application not working properly on chrome应用程序在 chrome 上无法正常工作
【发布时间】:2015-04-17 21:13:45
【问题描述】:

我在 VB.net 和 Java 脚本上有一个应用程序,它在兼容模式下的 IE 中运行良好,但在 Chrome 上运行不正常。当我打开开发人员工具时,会显示类似的消息;

Uncaught NoModificationAllowedError: Failed to set the 'innerText' property on 'HTMLElement': The 'input' element does not support text insertion. TravelPolicy.aspx?PlanType=Individual:1783 captureEvents() is deprecated. This method doesn't do anything. releaseEvents() is deprecated. This method doesn't do anything. Uncaught NoModificationAllowedError: Failed to set the 'innerText' property on 'HTMLElement': The 'input' element does not support text insertion. TravelPolicy.aspx?PlanType=Individual:1905

这是我的 aspx 页面

<%@ Page Language="VB" AutoEventWireup="false" EnableEventValidation="false" CodeFile="TravelPolicy.aspx.vb"
    Inherits="Products_Travel_CODE_TravelPolicy" %>

<%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
    Namespace="System.Web.UI" TagPrefix="asp" %>
<%@ Import Namespace="System.Data" %>
<%@ Register Assembly="RJS.Web.WebControl.PopCalendar, Version=10.0.2512.14064, Culture=neutral, PublicKeyToken=815cf5007f7d0455"
    Namespace="RJS.Web.WebControl" TagPrefix="rjs" %>
<%@ Register Assembly="RJS.Web.WebControl.PopCalendar" Namespace="RJS.Web.WebControl"
    TagPrefix="rjs" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<%@ Register Src="~/Controls/wucAddress.ascx" TagName="wucAddress" TagPrefix="uc1_Cust" %>
<%@ Register Src="~/Controls/wucTravelAddress.ascx" TagName="wucTravelAddress" TagPrefix="uc1_Cover" %>
<%@ Register Src="~/Controls/wucHypothecationAddress.ascx" TagName="wucHypothecationAddress"
    TagPrefix="uc2" %>
<%@ Register TagPrefix="mbclb" Namespace="MetaBuilders.WebControls" Assembly="MetaBuilders.WebControls.CheckedListBox" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>Untitled Page</title>
    <link href="../../../App_Themes/REL/Style.css" type="text/css" rel="stylesheet" />
    <link href="../../../App_Themes/Verification/Style.css" type="text/css" rel="stylesheet" media="all" />
    
    <script type="text/javascript" src="../../../Script/print.js"></script>
   <%-- Added Later as u suggest--%>  
    <link rel="stylesheet" type="text/css" href="/admin/css/navigation.css" />

    <script language="vb" runat="server">    
    
        <System.Web.Services.WebMethod()> _
           Public Shared Function CheckPassportForBlackList(ByVal pass1 As String, ByVal pass2 As String, ByVal pass3 As String, ByVal pass4 As String, ByVal cookie As String) As String
            Dim ConsPassPort As String = ""
        
            If pass1 <> "" Then
                ConsPassPort = ConsPassPort + pass1 + ","
            End If
            If pass2 <> "" Then
                ConsPassPort = ConsPassPort + pass2 + ","
            End If
            If pass3 <> "" Then
                ConsPassPort = ConsPassPort + pass3 + ","
            End If
            If pass4 <> "" Then
                ConsPassPort = ConsPassPort + pass4 + ","
            End If
        
        
          
            Dim ChkVal As String = ""
            If ConsPassPort <> "" Then
                ConsPassPort = ConsPassPort.Substring(0, ConsPassPort.Length - 1)
            
                'Dim Momobj As New BlockedPassportStatusClient
                'Dim response As New Res_PassportDC
                Dim objComFun As New CommonFunctions
                Dim message As DataTable = New DataTable
            
                Try
                    'response = Momobj.StatusOfMultiBlockedPassport(ConsPassPort)
                    'message = response.DtPassport
                    message = objComFun.GetPassportBlockedStatusMultiple(ConsPassPort)
                Catch ex As Exception
                    ChkVal = ex.ToString
                    Return ChkVal
                End Try
            
                If message.Rows.Count > 0 Then
                    If message.Rows(0)(1).ToString().ToLower() = "true" Then
                        ChkVal = "This Passport Number  " + message.Rows(0)(0) + " is blocked.You can not issue Policy"
                    End If
                End If
                If message.Rows.Count > 1 Then
                    If message.Rows(1)(1).ToString().ToLower() = "true" Then
                        ChkVal = ChkVal + "This Passport Number  " + message.Rows(1)(0) + " is blocked.You can not issue Policy"
                    End If
                End If
                If message.Rows.Count > 2 Then
                    If message.Rows(2)(1).ToString().ToLower() = "true" Then
                        ChkVal = ChkVal + "This Passport Number " + message.Rows(2)(0).ToString() + " is blocked.You can not issue Policy"
                    End If
                End If
                If message.Rows.Count > 3 Then
                    If message.Rows(3)(1).ToString().ToLower() = "true" Then
                        ChkVal = ChkVal + "This Passport Number " + message.Rows(3)(0) + " is blocked.You can not issue Policy"
                    End If
                End If
            End If
            Return ChkVal
        End Function
    </script>

    <script type="text/javascript" language="javascript"> 


function checkTextAreaMaxLength(textBox,e, length)
{
}
More java script functions 


    </script>

    <script type="text/javascript" src="../../../Script/help.js"></script>
    
    <script type="text/javascript" src="/admin/js/textbox.js"></script>

   <%-- Added Later as u suggest--%>

</head >
</html>

请帮助解决这个问题。

【问题讨论】:

  • 您的应用程序似乎依赖于古代 IE 版本的非标准行为。 Chrome 仅支持标准模式,因此您需要更新应用程序的代码才能在 Chome 中通过导致您发布的错误的部分来工作。

标签: javascript jquery html css asp.net


【解决方案1】:

如果您可以在标准模式下将标准浏览器(如 chrome、Firefox、Safari 甚至 IE)指向它并且它可以正常运行,那么它真的应该被认为可以工作。说你只能使用 IE 并且它必须处于兼容模式并且“它可以工作”并没有多大意义。 :)

错误显示您在应用程序试图查找和加载的位置(相对于站点的根目录)缺少文件(但它们不存在 404 或无法提供服务)这些是;

/Admin/css/[name].css
/Admin/js/[name].js

如果没有您的代码,我会假设您构建项目,以便文本框脚本和一般导航样式等常见内容位于您网站的根目录中(可能不是这种情况)

/css 
/js

您能否检查您的网络服务器的虚拟根目录/文件夹是否指向您机器上的正确位置和/或您尝试加载的所有文件是否位于正确位置。毕竟浏览器只是做一个简单的HTTP GET,如果文件不在那里,那么它就不能真正下载它。

尝试将一个非常简单的 test.html 文件放在您网站的根目录中,其中包含以下内容(带有适当的路径)

<!DOCTYPE html>
<html>
  <head>
    <link rel="stylesheet" type="text/css" href="/admin/css/navigation.css" />
  </head>
  <body>
    <h1>Hello</h1>
    <script src="/admin/js/textbox.js"></script>
  </body>
</html>

看看它们是否被加载(如果你的要求和你的服务器配置正确,那么你不应该得到任何 404。这个文件也非常简单,任何浏览器(古代或现代)都应该能够提供这个内容...

【讨论】:

  • 即使在 IE 中也不需要,因为您需要兼容模式,当然也不需要任何其他浏览器。 IE 甚至不符合 W3C 标准,尤其是在兼容模式下。如果世界上大多数浏览器(包括 IE)都不能使用您的应用程序,而如果它们破坏了正常的浏览器操作,那么少数可以,那么我会谦虚地建议它不起作用。首先让它在所有其他设备上工作(通过使用标准),然后为旧版 IE 修复它。而不是构建应用程序以使用兼容模式并强制 Quirks,因为即使是 MS 也建议您不要为新应用程序这样做。
  • 我的 Java Script 代码在 Chrome 中被阻止,但在 IE 中同样可以正常工作,那么该怎么办..??请帮忙
  • 不应该被阻止,它只是一个 GET 请求,您能否更新您的问题以包含适合您项目的文件夹结构,包括主文件夹和 CSS、JS、字体图像的位置等等(不想知道每个文件,只知道文件夹)。您能否也提供我在上面答案中描述的 test.html 文件,看看您得到了什么
  • 正如你所建议的(谢谢)我改变了文件夹结构。现在我只收到这些错误消息。(有问题的参考)
  • 1) 你会更容易摆脱所有“../../../../”的东西并将路径固定并相对于站点的根目录“/script/help.js” 这样您就绝对知道使用了哪些代码。 2)将外部加载的脚本放在您的内联脚本之前,以便您正确的任何代码都可以使用外部加载的文件。 (实际上,如果可以的话,将您的内联代码移动到脚本中。3)HTMLElement 没有文本,它们有 HTML 标记,您要么需要使用 JQuery .html('content') 或类似 document.getElementById( "id").innerHTML = ""
【解决方案2】:

除了关于路径的所有(有效)cmets(我建议您将所有 ../ 替换为 ~/ 以便您最终得到 link href="~/App_Themes/REL/Style.css -- if 您的应用主题路径在根目录)

除了来自@Code Uniquely 的有效评论:

只有当你能指出一个 标准浏览器,如 chrome、Firefox、Safari 甚至 IE 标准 模式,它可以正常工作。说你只能使用 IE 和 它必须处于兼容模式并且“它有效”不会使 很有意义。 :)

我们都错过了您尝试设置输入控件的 innerText 属性的点 - 正如您在错误消息中看到的那样 - 无效。 输入控件具有值属性,而不是内部文本。所以,看看这个:Set the value of an input field 并相应地更改您的 javascript。

它与你的后端代码有多么可怕没有任何关系。这是普通的标准 javascript。

强调“IE兼容模式”点: 您不能依靠兼容模式下的 IE 来“正常工作”。

  • 如果它在 IE 兼容模式下工作,则它已损坏。
  • 如果它适用于其他一切,并且它在 IE 兼容模式下也适用,那么你很幸运。

【讨论】:

  • OP 更新了代码以显示一整套新的错误消息:)
  • 这个:""Uncaught NoModificationAllowedError: 无法在 'HTMLElement' 上设置 'innerText' 属性:'input' 元素不支持文本插入。"" ?
  • 我刚刚在 chrome 中添加了 IE 标签,现在它工作正常。现在帮帮我......我想在页面加载运行时检查浏览器中是否已经添加了 IE TAB 插件。我的应用程序在 VB.net 中。
  • auch 不!你为什么不重写你的javascript代码在所有浏览器上都有效?就像我说的:它与您的后端代码无关(!)这是一个javascript错误,在OLD IE版本上是(不正确的)允许的。不要去那里。重写你的 javascript - 不要依赖插件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-06
相关资源
最近更新 更多