gpt4 book ai didi

JavaScript 代码可在旧服务器上运行,但不能在新服务器上运行

转载 作者:行者123 更新时间:2023-11-29 15:39:26 24 4
gpt4 key购买 nike

这让我发疯了。我正在尝试将一些遗留应用程序迁移到新服务器,但我在使用 document.all 时遇到了很多问题贯穿整个代码。

在你说之前,我知道。不要使用 document.all .它就在那里,我对此无能为力...这个特殊问题在程序集中有 JavaScript,我没有源代码,也没有重新开发的权限。

我的主要困惑是,当我在与迁移版本相同的浏览器中进行测试时,应用程序的当前版本正在运行。这是一个直接的复制和粘贴工作,在迁移过程中没有代码发生变化,但是当我在新服务器上运行应用程序时 document.all(element)总是返回 null。

IIS 或更新的 .NET 框架是否以某种方式以不同方式处理客户端脚本?

我从使用 IIS 6 的 Windows Server 2005 上托管的 .NET 2.0 转到使用 IIS 8 的 Windows Server 2012 上托管的 .NET 4.0。

我正在寻找为什么在同一浏览器中测试时这些行为会有所不同的任何想法

更新:document.all 的目标用户控件正在编码,这弄乱了控件的 ID,即应该是 'elementId'输出为 'elementId'

程序集中的代码正在使用 Attributes.Add,其中包含单引号。我发现了一些建议新类(class)的资料来源,例如:

public class HtmlAttributeEncodingNot : System.Web.Util.HttpEncoder
{
protected override void HtmlAttributeEncode(string value, System.IO.TextWriter output)
{
output.Write(value);
}
}

被添加将允许使用 <httpRuntime encoderType="HtmlAttributeEncodingNot"/> 关闭编码在 web.config 中,但我无法向该项目添加新类

最佳答案

我将按原样保留已接受的答案,但添加此答案以防其他人将来遇到此问题。

我的情况发生了变化,我能够向项目中添加一个类。我问题中的类(class):

public class HtmlAttributeEncodingNot : System.Web.Util.HttpEncoder
{
protected override void HtmlAttributeEncode(string value, System.IO.TextWriter output)
{
output.Write(value);
}
}

连同在 web.config 中使用类进行编码: <httpRuntime encoderType="HtmlAttributeEncodingNot"/>

足以处理 Attributes.Add 中的单引号被编码为 $#39;

此外,旧 JavaScript 需要注意的一点是 .net 呈现控件的 ClientID 的方式。使用上述代码的组合,以及 <xhtmlConformance mode="Legacy"/> , 和 clientIDMode="AutoID" ,我能够呈现与 2.0 等效的 html 并暂时解决我的问题。

关于JavaScript 代码可在旧服务器上运行,但不能在新服务器上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21920211/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com