Rhino E4X不允许{expression}中的xml文字
Rhino E4X does not allow xml literal in {expression}
我使用rhino1_7R2。我发现以下程序会导致语法错误(非法形成的XML语法):
function b(node) {
return <span>{node}{node}</span>;
}
a=<span>foo {b(<div>bar</div>)} baz</span>;
alert(a);
但它工作:
function b(node) {
return <span>{node}{node}</span>;
}
var bar=<div>bar</div>;
a=<span>foo {b(bar)} baz</span>;
alert(a);
看起来Rhino在{expression}中不允许字符xml。首先,我认为ECMAScript规范禁止这样做。但是在Firefox(3.6.23)中允许这种语法。所以可能不是因为ECMA规范。
这是在Firefox中运行的测试页面(它可以工作):
<script>
function b(node) {
return <span>{node}{node}</span>;
}
a=<span>foo {b(<div>bar</div>)} baz</span>;
alert(a);
</script>
有人能告诉我这是因为Rhino的bug或者Rhino或Ecmascript的规范吗?
我将在Java/Rhino中附加测试代码。问候。import org.mozilla.javascript.Context;
import org.mozilla.javascript.ScriptableObject;
public class Main {
public static void main(String[] args) {
Context c=Context.enter();
ScriptableObject scope = c.initStandardObjects();
String source_OK =
"function b(node) { " +
" return <span>{node}{node}</span>;" +
"}" +
"var bar=<div>bar</div>;" +
"a=<span>foo {b(bar)} baz</span>; ";
Object a=c.evaluateString(scope, source_OK, "TEST", 1, null);
System.out.println(a);
String source_NG =
"function b(node) { " +
" return <span>{node}{node}</span>;" +
"}" +
"a=<span>foo {b(<div>bar</div>)} baz</span>; ";
a=c.evaluateString(scope, source_NG, "TEST", 1, null); //Error!
System.out.println(a);
Context.exit();
}
}
对不起,我自己发现这是Rhino的bug:
https://bugzilla.mozilla.org/show_bug.cgi?id=323890我还为这个错误发送了一个补丁。
相关文章:
- 在javascript中的xml中创建一个链接
- 如何在javascript(ajax)中使用嵌入HTML中的XML数据
- 访问解析字符串中的XML节点
- 从java中的XML读取
- XML 到 JSON - 处理 JavaScript 中的 xml 命名空间和别名
- $.ajax 响应在 content-Type:application/json 中为 JSON 中的 xml 内容生成
- 获取 XSLT 中的 XML 元素
- 无法摆脱“变量”中的XML
- JQuery 中的 XML 格式化程序
- 工作灯适配器中的 XML 处理
- JavaScript 中的 XML 清理和反向缎化
- Node.js中的XML(使用javascript)
- 在存储在变量中的xml上运行Xpath(获取“未捕获的类型错误:未定义不是函数”)
- setInterval 中的 xml 数据不替换信息
- 使用 JSON 解析 XML,也包含嵌入在标记属性中的 XML
- PhoneGap 中的 XML 解析错误
- 使用 simplexml_load_string 读取 PHP 中的 XML
- 如何从 JavaScript 中的 XML 转换的 JSON 解析 android 属性
- 使用 jQuery 从 Chrome 中的 XML 节点获取内部 XML
- 可以't使用getElementsByTagName从Javascript中的XML文档中检索节点