在eval javascript中使用TRUE:FALSE返回正在评估的语句

时间:2014-02-24 07:44:00

标签: eval imacros

我已经深入了解了一个imacros代码来比较IP和TRUE"PROXY ADDRESS={{!COL1}}"到达该端口的工作代理时返回的意图。作为iMacros的新手并且知道更少的javascript,我设法使用变量和提取来实现这一点[编辑以包含整个代码]

VERSION BUILD=9002379 RECORDER=FX
SET !ENCRYPTION NO    
TAB T=1
TAB CLOSEALLOTHERS
'clear cookies and cache:
CLEAR
SET !ERRORIGNORE NO
SET !DATASOURCE C:\MyiMacros\DATAinputs\VerifyTheseProxies.csv
SET !DATASOURCE_LINE 1
SET !EXTRACT_TEST_POPUP NO
SET NewTestProxy {{!COL1}}:{{!COL2}}
PROMPT  {{NewTestProxy}}
PROXY ADDRESS={{NewTestProxy}}
URL GOTO=geoiptool.com
WAIT SECONDS=2
 ' ooppss  proxy doesn't work
SET !EXTRACT NULL
TAG POS=1 TYPE=SPAN ATTR=ID:ProxyDetail EXTRACT=TXT
PROMPT {{!EXTRACT}}
SET ProxyFails {{!EXTRACT}}
PROMPT {{ProxyFails}}<SP>{{!COL1}}:{{!COL2}}
SET YesPrxyFail (if('{{NewTestProxy}}'.equals('{{ProxyFails}}'))?"TRUE":"FALSE");
PROMPT {{YesPrxyFail}}

当我想到TRUE时,NewTestProxy和ProxyFails完全相同,但我得到了整个complet表达式,就好像没有被视为javascript ...

(if('{{NewTestProxy}}'.equals('{{ProxyFails}}'))?"TRUE":"FALSE");

获得该类型的结果

使用

SET YesPrxyFail EVAL(('{{NewTestProxy

我尝试了建议的

SET YesPrxyFail (if('{{NewTestProxy

我也尝试了建议的

SET YesPrxyFail eval(if('{{NewTestProxy

我觉得我正在跟踪我在这里和imacros网站以及其他地方挖出的所有样品。我错过了'小'的东西,我不知道它是什么。帮助将不胜感激!

我有一个解决方案,但不是100%舒适。这两个都返回“TRUE”,但使用两个不同的比较者

SET YesPrxyFail EVAL("var s = \"{{ProxyFails}}\"===\"{{NewTestProxy}}\"; s;")
SET YesPrxyFail EVAL("var s = \"{{ProxyFails}}\"==\"{{NewTestProxy}}\"; s;")    

假设两个变量的来源是代理地址,并且接收到的两个变量可以(理论?)是来自不同来源的对象,那么严格来说它们不能相同。发现这是一个参考,但我不知道如何检查类型或实际上我测试的变量是否是对象..

https://developer.mozilla.org/enUS/docs/Web/JavaScript/Reference/Operators/Comparison_Operators

如果iMacros'EVAL'被移除,那么如果有问题,则会出现错误:它不是javascript eval

2 个答案:

答案 0 :(得分:0)

我认为,你不应该以这种方式使用EVAL,而应该使用带有三元运算符的if子句(即?:),如下所示 -

如果( '{{NewTestProxy}}' 等于( '{{ProxyFails}}')。) “TRUE”: “FALSE”;

然后在eval方法中使用此语句的结果,因为eval()方法评估表示为字符串的JavaScript代码。

您应该使用以下代码,它会对您有所帮助:

的eval(如果( '{{NewTestProxy}}' 等于( '{{ProxyFails}}')) “TRUE”。? “FALSE”);

如果有任何混淆,请退回。

答案 1 :(得分:0)

您找到的解决方案

  

SET YesPrxyFail EVAL("var s = \"{{ProxyFails}}\"==\"{{NewTestProxy}}\"; s;")

完全没问题。这些只是字符串。 iMacros从csv文件(NewTestProxy)读取文本字符串,从网页中提取文本(ProxyFails),EVAL正在比较两个字符串。如果它们是相同的,你会得到“真实”(也作为字符串!)。