0

这来自谷歌浏览器扩展代码

"search" == request.ajax && $.ajax({
        url: request.url,
        type: "GET",
        dataType: "html"
      }).done(function(msg) {
        if (msg.indexOf("https://login.testabc.com/?from=sm&return_url=") > -1)
          return void chrome.tabs.query({
            index: tabs[0].index
          }, function(a) {
            chrome.tabs.sendMessage(a[0].id, {
              type: "ezusy_searched",
              dataSearch: "login"
            }, function(a) {})
          });
        var data = jQuery(msg), script; //what is msg && script?
        data.each(function(a) {
          $(this).text().indexOf("window.runParams") > -1 && (script = $(this).text())
        }),
          eval(script); //what does it mean?

什么是脚本和味精?为什么这样的代码。

4

2 回答 2

0

您可以查看我附加的链接以获取更多详细信息。我将在这里提取一些内容:

(i) $.ajax().done()

$.ajax()返回一个jqXHR对象。

然后根据规范 - jqXHR.done(function( data, textStatus, jqXHR ) {});msg您的代码片段中的变量指的是data参数。

参考:https ://api.jquery.com/jquery.ajax#jqXHR

(ii) JavaScript 变量定义:逗号与分号

script变量只是您在代码中声明的变量

(iii) 评估()

eval() 函数评估表示为字符串的 JavaScript 代码。

参考:https ://developer.mozilla.org/enUS/docs/Web/JavaScript/Reference/Global_Objects/eval

于 2019-09-28T02:31:57.647 回答
0

我们需要查看更大的上下文来了解这段代码的总体用途,但一般来说,这段代码从页面中获取一些内容,如果它"window.runParams"在该内容中找到,那么它将将该内容分配给script变量script = $(this).text(),然后将其作为 Javascript 执行eval(script)

于 2019-09-28T00:13:37.223 回答