【问题标题】:Use of TRUE:FALSE in eval javascript returns the statement being evaluated在 eval javascript 中使用 TRUE:FALSE 返回正在评估的语句
【发布时间】:2014-02-24 07:44:00
【问题描述】:

我已经深入到一个 imacros 代码来比较 IP 的意图,即当 "PROXY ADDRESS={{!COL1}}" 到达该端口的工作代理时返回 TRUE。作为 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}}

当 NewTestProxy 与 ProxyFails 完全相同时,我期待 TRUE,但我得到了返回的整个完整表达式,好像没有被视为 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

【问题讨论】:

  • 不确定我对网站规则的解释是否正确......关于我可能的解决方案的新问题是否应该在新线程中?

标签: eval imacros


【解决方案1】:

你找到的解决方案

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

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

【讨论】:

    【解决方案2】:

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

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

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

    你应该使用下面的代码,它会帮助你:

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

    如有任何混淆,请回复。

    【讨论】:

    • 我试过你的建议,结果和我的一样。 TY 输入不过!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多