如标题所述,我想要实现的目标如下:
我正在使用java中包含的脚本.如果有人可以帮助我,我会很高兴.
我有Java中JSON序列化对象的字符串表示,例如"{\"name\":\"John\",\"age\":24}".我如何解析并将其返回到JavaScript上下文,就像JSON.parse(str)在JS中一样?谢谢.
我一直在使用PEG.js版本0.6.1使用Maven插件(即从Java代码调用PEG.js)构建解析器,但是现在在尝试升级到新版本时,它失败并显示错误消息:
sun.org.mozilla.javascript.internal.EcmaError: SyntaxError: missing ; before statement (#3213(eval)#1) in #3213(eval) at line number 1
调试时我注意到PEG.buildParser()函数调用出来的解析器看起来语法错误,当然从浏览器调用它时不会发生.
这是我如何称呼它:
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine jsEngine = manager.getEngineByName("JavaScript");
jsEngine.eval(new InputStreamReader(this.getClass().getResourceAsStream(PEGJS_LIB)));
Invocable invok = (Invocable) jsEngine;
Object peg = jsEngine.get("PEG");
invok.invokeMethod(peg, "buildParser", grammarSource);
Run Code Online (Sandbox Code Playgroud)
其中,grammarSource在我的测试情况下,是作为基本语法的网站例如,和PEGJS_LIB = peg-0.7.0.js.
欢迎任何想法!我在这里用完了......
我在Java中使用javax.script,我希望能够检测当前的Javascript实现是否是Rhino.我这样做是因为我需要脚本才能在网页和Rhino上正常工作.
Javascript伪代码:
function writeMessage(message) {
if (implementation is Rhino) {
print(message);
}
else if (script is running in a web browser) {
document.write(message);
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个 javascript 脚本,它在评估时返回一个 NativeObject
obj = context.evaluateString(scope,"({age:3, name:'bob'})", "<source">, 1, null)
Run Code Online (Sandbox Code Playgroud)
然后我将 obj 转换为 NativeObject 或 Map,然后运行 put 方法
castObj.put("surname","smith")
Run Code Online (Sandbox Code Playgroud)
我得到一个 java.lang.UnsupportedOperationException 抛出。还有另一种方法可以更改对象值吗?
有没有办法列出所有JavaScript标准对象方法?
我的意思是我正在尝试获取String的所有内置方法,所以我在想,我确实尝试过这样做:
for( var method in String ) {
console.log( method );
}
// I also tried this:
for( var method in String.prototype ) {
console.log( method );
}
Run Code Online (Sandbox Code Playgroud)
但没有运气.此外,如果解决方案应该适用于所有ECMAScript标准类/对象.
编辑:我想指出解决方案应该在服务器端环境中工作,如rhino或node.js.
并尽可能不使用第三方API /框架.
我发现 Gameboy 脚本是用 javascript 编写的,我正在尝试让它在 java 中运行。(我不是在寻找任何 java gameboy 模拟器)。
我有一个带有这两个文件的javascript
function cout(e, t) {
java.lang.System.out.println("e = " + e + " t = " + t);
}
function setTimeout(expr, msec) {
if (typeof expr == "function") {
// save the global object and trailing args for later apply
var gobj = this;
var args = [].concat(arguments).slice(2);
var o = {actionPerformed: function(){expr.apply(gobj, args)}};
} else {
var o = {actionPerformed: function(){eval(expr)}};
}
var al = new java.awt.event.ActionListener(o);
var t = …Run Code Online (Sandbox Code Playgroud) 我想编写一个用Mozilla Rhino处理的JavaScript代码,它可以执行一个简单的HTTP GET请求,该请求从URL获取文本字符串.问题是,我无法在Rhino中找到任何支持来执行任何类型的HTTP请求.此外,我无法访问Rhino实例本身,它通过TopBraid Composer IDE运行本体建模.我相信任何关于我可以在我的JavaScript文件中导入的简单库的想法都可能是一个很好的解决方案.
有帮助吗?谢谢.
在我使用 htmlunit 的经历中,我慢慢意识到 htmlunit 与 javascript 不能很好地交互。
htmlunit 使用的 rhino js 引擎绝对是这些问题的根本原因,我想知道是否可以在仍然使用 htmlunit 的同时使用 geckodriver 之类的东西来代替。
任何帮助表示赞赏。
谢谢。
我曾经在 GAS 上写过脚本。因为我确实使用 GAS 通过聊天和 Google 电子表格管理出勤率。聊天工具是聊天工作。它适用于 Gas(Rhino)。但它不适用于 V8。
我试图将 line19 重写for each (var obj in json){为for (var obj in json){
请告诉我什么是坏的...我应该重写哪个?
function recordTime(){
/*Sheet setting*/
var wsData = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("data"); //DataSheetSetting
var wsStaff = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("coworkers"); //CoworkersMasterSetting
/*ChatworkURLrequest*/
var params = {
headers : {"X-ChatWorkToken" : 'anynumber'},
method : "get"
};
var roomID = anynumber; //ROOMID
var url = "https://api.chatwork.com/v2/rooms/" + roomID + "/messages?force=0"; //GetMessageFromGroupchat
try{
var respons = UrlFetchApp.fetch(url, params); //GetResponseFromChatworkAPIendpoint
var json = JSON.parse(respons.getContentText()); //Returnjson
for …Run Code Online (Sandbox Code Playgroud) rhino ×10
javascript ×7
java ×6
gecko ×1
http ×1
javax.script ×1
junit ×1
mozilla ×1
node.js ×1
pegjs ×1
scriptengine ×1
settimeout ×1
timer ×1
v8 ×1