【问题标题】:How to get a value from page source code from a function tag?如何从功能标签的页面源代码中获取值?
【发布时间】:2019-06-08 03:12:40
【问题描述】:

这里是源代码中的函数

function dosubmit()
  {
    if (getObj("Frm_Username").value == "")
    {
      getObj("errmsg").innerHTML = "Username cannot be empty.";
      getObj("myLayer").style.visibility = "visible" ;
      return;
    }
    else
    {
      getObj("LoginId").disabled = true;
      getObj("Frm_Logintoken").value = "3";
      document.fLogin.submit();
    }
  }

我想获取 getObj("Frm_Logintoken") 的值,因为我无法提取该值 来自#Frm_Logintoken

使用 document.getElementById("#Frm_Logintoken") 这给了我 null

因为 Frm_Logintoken 只有在我点击提交时才会获得它的价值。

<input type="hidden" name="Frm_Logintoken" id="Frm_Logintoken" value="">

完整的page code

我在网上找到了这个/getObj\("Frm_Logintoken"\).value = "(.*)";/g,但是当我运行它时......它又给了我同样的一行!这是full code

我找到的另一个正则表达式,但我什至不知道如何使用它

要搜索的正则表达式示例: before_egrep='N1:getObj("Frm_Logintoken").value = "(\w+)"'

这里,N1 被赋值为反向引用的值 - 括号中的表达式。 \w + 表示主要的复合字符, 这是“[_[:alnum:]]”的同义词。再次——注意 括号 - 这是反向链接。同时,还有 源代码片段中的括号 - 需要转义

我正在尝试制作一个可以在后台运行的自动登录脚本

不向用户显示登录表单页面,而是显示它之后的唯一页面

我也在网上找到了这段代码,但不知道是什么 它contains xhr

吸引我注意的是

/getObj\("Frm_Logintoken"\).value = "(.*)";/g 

当我运行它时……它又给了我一条线!

一些注意事项:

我试过 document.getElementById("Frm_Logintoken").value 但它给了我空的 "" 因为

Frm_Logintoken 只有在我点击提交时才会获得它的价值。

如果 Frm_Logintoken 令牌值与页面中的不同,页面甚至不会接受正确的密码。

Frm_Logintoken 是页面生成的令牌,它基本上在每次成功登录时加一。

【问题讨论】:

    标签: javascript html regex object attributes


    【解决方案1】:

    我不太确定用于帮助或改进以帮助解决您的问题的表达式的建议,但是如果我们希望从建议的 input 标记中提取某些属性和值,我们可能会从表达式开始类似于:

    name="(.+?)"|id="(.+?)"|value="(.+)?"
    

    如果需要的话,它使用交替来同时收集某些属性的值。

    Demo

    正则表达式

    如果不需要此表达式并且您希望对其进行修改,请访问此链接regex101.com

    正则表达式电路

    jex.im 可视化正则表达式:

    【讨论】:

    • 谢谢,但我不想要输入标签中的值,而是函数 dosubmit() 标签中的值
    • 这一行正好getObj("Frm_Logintoken").value = "3";
    • 这不会匹配所有不包含新行的行吗?我们有什么办法可以找到一个匹配这个getObj("Frm_Logintoken").value = "3";
    • 我发现getObj\("Frm_Logintoken"\).value = "(.*)"; 按预期工作,但我如何获得结果组 1 的值?
    【解决方案2】:

    要获得您的价值,您可以使用捕获组 ([^"]+) 和否定字符类:

    \bgetObj\("Frm_Logintoken"\)\.value = "([^"]+)";
    

    Regex demo | Javascript demo

    例如:

    let str = `getObj("Frm_Logintoken").value = "3";`;
    let pattern =/\bgetObj\("Frm_Logintoken"\)\.value = "([^"]+)";/;
    
    console.log(str.match(pattern)[1]); //3
    

    【讨论】:

    • 你的回答很好,但我想我问错了问题......我需要制作一个自动登录脚本,所以我需要脚本来为我找到价值......所以让 str 不是在我的情况下可能!我的问题的标题应该是什么?
    • @minanageh 不确定您的 jacascript 位于何处,但也许您可以检查 this page 以获取当前页面的 html 而不是 let str
    • 好的,我会检查它.. 我的 java 脚本应该位于本地 Web 服务器上,其 ip 类似于 192.168.1.22
    • 如果它是同一页 let str = document.documentElement.innerHTML 然后你的代码 let pattern =/\bgetObj\("Frm_Logintoken"\)\.value = "([^"]+)";/; console.log(str.match(pattern)[1]); 我知道如何使它工作,但如果它来自另一页?
    • 这取决于该页面的位置。如果它在同一个域上并且允许,您可以尝试异步调用来获取页面并获取该 html。
    猜你喜欢
    • 2010-11-24
    • 1970-01-01
    • 1970-01-01
    • 2021-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-20
    • 1970-01-01
    相关资源
    最近更新 更多