Javascript 如何在RubyRacer中计算HTML DOM对象(如“文档”)

Javascript 如何在RubyRacer中计算HTML DOM对象(如“文档”),javascript,ruby,ruby-on-rails-3,dom,Javascript,Ruby,Ruby On Rails 3,Dom,RubyRacer允许我在ruby环境中轻松执行javascript代码,如下所示: cxt = V8::Context.new wanted_output = cxt.eval(whatever_javascipt_code) 当涉及像“document”这样的对象时,比如在下面的代码段中,我们该如何做呢? (换句话说,在这种情况下,如何生成“document.write”的输出?) 谢谢你的任何提示 假设变量“script”包含上述javascript代码: cxt = V8::Conte

RubyRacer允许我在ruby环境中轻松执行javascript代码,如下所示:

cxt = V8::Context.new
wanted_output = cxt.eval(whatever_javascipt_code)
当涉及像“document”这样的对象时,比如在下面的代码段中,我们该如何做呢? (换句话说,在这种情况下,如何生成“document.write”的输出?)


谢谢你的任何提示

假设变量“script”包含上述javascript代码:

cxt = V8::Context.new
script.insert(0, "output=''")

document_write_count = script.scan('document.write(').count
remaining = script
document_write_count.times do |i|
  document_write_clause_content = remaining.partition('document.write(')[2].partition(')')[0]
  document_write_clause = "document.write(#{document_write_clause_content})"
  document_write_clause_replacement = "output+=#{document_write_clause_content}"
  script.gsub!(document_write_clause, document_write_clause_replacement)
  remaining = remaining.rpartition(document_write_clause_replacement)[2]
end

script.insert(-1, "output;")

wanted_output = cxt.eval("#{script}")

假设变量“script”包含上述javascript代码:

cxt = V8::Context.new
script.insert(0, "output=''")

document_write_count = script.scan('document.write(').count
remaining = script
document_write_count.times do |i|
  document_write_clause_content = remaining.partition('document.write(')[2].partition(')')[0]
  document_write_clause = "document.write(#{document_write_clause_content})"
  document_write_clause_replacement = "output+=#{document_write_clause_content}"
  script.gsub!(document_write_clause, document_write_clause_replacement)
  remaining = remaining.rpartition(document_write_clause_replacement)[2]
end

script.insert(-1, "output;")

wanted_output = cxt.eval("#{script}")

这是我第一次听说这种宝石,听起来很有趣。可惜它没有安装在windows上:((这是我第一次听说这个gem,听起来很有趣。可惜它没有安装在windows上:((
cxt = V8::Context.new
script.insert(0, "output=''")

document_write_count = script.scan('document.write(').count
remaining = script
document_write_count.times do |i|
  document_write_clause_content = remaining.partition('document.write(')[2].partition(')')[0]
  document_write_clause = "document.write(#{document_write_clause_content})"
  document_write_clause_replacement = "output+=#{document_write_clause_content}"
  script.gsub!(document_write_clause, document_write_clause_replacement)
  remaining = remaining.rpartition(document_write_clause_replacement)[2]
end

script.insert(-1, "output;")

wanted_output = cxt.eval("#{script}")