javascript - StringBuilder 中的 document.write ?

标签 javascript dynamic ashx document.write

我在 ashx 文件中使用 StringBuilder 来返回 javascript。一切正常,除了一行......

javascript.Append("document.write(\"<script id=__ie_onload defer \" + \"src=javascript:void(0)><\/script>\");");

为了便于阅读,这里是未转义的版本:

document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");

如果我注释掉这一行,我的 ashx 文件就会发挥作用!但如果我把它保留在里面,它甚至不会运行。在 StringBuilder 中使用 document.write 语句是否有某种限制?或者,是否有更好的方法从 .NET 中编写 Javascript?由于需要使用服务器变量,它必须来自 .NET。

最佳答案

您的结束 script 标记中存在无法识别的转义序列。 \/ 不是有效的转义序列。您可能想要:

javascript.Append("document.write(\"<script id=__ie_onload defer \" + \"src=javascript:void(0)></script>\");");

或者,如果您确实想要该 \/ 序列,则对 \ 进行双重转义:

javascript.Append("document.write(\"<script id=__ie_onload defer \" + \"src=javascript:void(0)><\\/script>\");");

作为调试技巧,如果您的工具为您提供的反馈很差,甚至看不到编译错误,请尝试创建一个包含有问题代码的测试应用程序。我将您的代码复制到控制台应用程序中,例如:

static void Main(string[] args)
{
    var javascript = new StringBuilder();
    javascript.Append(...
    Console.Write(javascript);
}

...我在编译时立即看到了问题:

Unrecognized escape sequence

...问题序列下划线。

关于javascript - StringBuilder 中的 document.write ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3632618/

相关文章:

javascript - Bootstrap-Vue : @click. native 在 <b-form-checkbox> 上表现得很奇怪

python - 动态分配模块名称作为别名

javascript - 使用 jQuery 封装动态内容

c# - 具有相同名称属性循环的多个复选框

c# - 多个图像处理程序调用导致 IE 在弹出窗口中挂起

PHP 脚本将目录从一台 Linux 服务器移动到另一台 Linux 服务器?

javascript - 有哪些依赖于 'typeof null' 返回对象的代码示例?

javascript - 如何保证我的枚举定义在 JavaScript 中不会改变?

c++ - 在 C++ 应用程序中动态使用 libmysql.dll

c# - 如何使用显示图像的处理程序检查图像控件中是否存在图像