gpt4 book ai didi

javascript - ckeditor 导致后续脚本中以 @ 为前缀的注释在 IE 10 中作为代码执行

转载 作者:行者123 更新时间:2023-11-28 09:00:10 24 4
gpt4 key购买 nike

我有一个 HTML 页面,例如:

<html>
<head>
<title>Test Page</title>
<script type="text/javascript"
src="http://svn.ckeditor.com/CKEditor/releases/latest/ckeditor_basic_source.js"></script>
<script type="text/javascript">
//@x=y
</script>
</head>

<body>
Test Page
</body>
</html>

评论//@x=y在 IE 10 中作为代码执行,浏览器提示 'y' is undefined :

minimal testcase

浏览器在以下情况下停止提示:

  • 我删除了 CKEditor 脚本
  • 删除 @字符
  • 更改 <script/> 的顺序标签

这里可能出了什么问题?

更新:我将根本原因缩小到 conditional compilation statement在 CKEditor 的 core/env.js文件。

if ( !CKEDITOR.env )
{
/**
* @namespace Environment and browser information.
*/
CKEDITOR.env = (function()
{
var agent = navigator.userAgent.toLowerCase();
var opera = window.opera;

var env =
/** @lends CKEDITOR.env */
{
/**
* Indicates that CKEditor is running on Internet Explorer.
* @type Boolean
* @example
* if ( CKEDITOR.env.ie )
* alert( "I'm on IE!" );
*/
ie : /*@cc_on!@*/false,
...

如果我删除 /*@cc_on!@*/评论,一切正常,正如人们所期望的那样。

最佳答案

我认为这是由CKEditor中包含的条件编译语句引起的。如果设置了/*@cc_on@*/,IE10会将//@后面的部分识别为它应该执行的JavaScript代码。 jQuery 团队遇到了此错误的变体 here 。将 //@ 部分包装在 block 注释中,例如 /*//@x=y*/ 可以解决该问题。

CKEditor 团队已提交 bug report关于这一点。

关于javascript - ckeditor 导致后续脚本中以 @ 为前缀的注释在 IE 10 中作为代码执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17868722/

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