【发布时间】:2009-08-10 06:41:00
【问题描述】:
我在评估依赖于prototype.js 的script.js 文件时遇到问题。当我试图通过 java 中的 rhino 脚本引擎评估 script.js 文件时,我得到了类似“TypeError:$H 不是函数,它是 java.lang.String。”的脚本异常。如何评估文件以及如何包含prototype.js 和定义原型对象?
【问题讨论】:
标签: java javascript
我在评估依赖于prototype.js 的script.js 文件时遇到问题。当我试图通过 java 中的 rhino 脚本引擎评估 script.js 文件时,我得到了类似“TypeError:$H 不是函数,它是 java.lang.String。”的脚本异常。如何评估文件以及如何包含prototype.js 和定义原型对象?
【问题讨论】:
标签: java javascript
您不能仅使用 Rhino 评估prototype.js。 prototype.js 有很多对 HTML DOM 的引用,这些引用在 Rhino/Java 中没有实现。 例如(来自prototype.js): document.createTextNode('') 文档全局对象未在 Rhino 上下文中定义,createTextNode 也未定义。
解决方案是从您的prototype.js 副本中删除所有引用文档、窗口或导航器对象的对象/函数。 (假设你的 js 文件不使用它们)
【讨论】:
您是否以正确的顺序评估它们?他们需要自下而上进行评估
【讨论】:
看看env-js,它是一个用于Rhino 的模拟浏览器环境。它基于some work by John Resig 让JQuery 在Rhino 中工作。如果 Prototype 也能正常工作,我不会感到惊讶。
【讨论】: