"非法字符“;Watir execute_script时出错
"illegal character" error when Watir execute_script
我通过用户界面中的文本区域获取JavaScript代码,然后在我的应用程序中执行代码,如下所示:
用户输入:
text = 'I am fine!!! ';
return text.replace(/(.+)'s+$/g, '$1’);
然而,在rails中,转义符被添加到文本区域中的用户输入中:
"text = 'hello how are you? ';''d'r'nreturn text.replace(/(.+)''s+$/g, '$1’);"
因此execute_script语句给出了一个"非法字符"错误。
browser.execute_script("text = 'hello how are you? ';''d'r'nreturn text.replace(/(.+)''s+$/g, '$1’);")
如何在不使用regex的情况下去掉转义符,以便execute_script运行良好?
看看这个:
browser.execute_script("text = 'hello how are you? '; return text.replace(/(.+)''s+$/g, '$1');")
但是!你到底为什么需要它
这是一个非常奇怪的案例,我在Dave的评论中加了+1。做一些javascript魔术并不是典型的用户操作。试着重新想想你在做什么。
您是否考虑过尝试String#gsub!为了这个?以下是我可能会如何处理它:
test = "''d'r'nreturn text.replace(/(.+)''s+$/g, '$1’);"
=> "''d'r'nreturn text.replace(/(.+)''s+$/g, '$1’)"
test.gsub!(/['d'n'r''d]/, '')
=> "return text.replace(/(.+)s+$/"
如果你不想覆盖它,你也可以使用String#gsub,返回一个修改过的副本
test.gsub(/['d'n'r''d]/, '')
=> "return text.replace(/(.+)s+$/"
很明显,您可以自定义正则表达式来自定义您的需要。还要小心使用智能引号,如$1的结束引号,因为’
与'
不同
相关文章:
- html文件中的script标记根本不起作用
- 骨干's Router.execute(callback,args,name)方法获取未定义的名称
- 用javascript将script元素附加到头部;铬不能工作
- script标记如何解析node_modules的路径
- 在<script src=“"></脚本>标签
- Google Script HtmlService,通过多个选项卡复制URL变量
- 为什么firefox开发人员控制台引用script.js
- 等效于<script src=“;something1.json”></脚本>
- If Else Java Script HTML
- strongloop script.js run find in before delete方法:如何同步运行异步方法
- 是否在Script Src标记中包含Script<脚本>(JavaScript等)
- Java Script将对象方法映射到数组中的对象
- 如何在Java Script中比较二维数组和一维数组,并将常见数据存储在另一个数组中
- LABjs错误:脚本总是使用.script()来执行加载的序列
- 从JSP页面调用Java Script函数未返回值
- 显示“<script src='some.js'></脚本>"在Html文档中
- 当用$.getScript()加载脚本时,有一种方法可以从用$.get script()装载的脚本中调用父脚本中的函数
- Script won't execute location.href
- 为什么我得到“Can't execute code from a free script”?
- 在jquery上使用webdriver execute-script是行不通的