Php Greasemonkey脚本,用于将javascript变量与另一个页面进行比较';什么内容?

Php Greasemonkey脚本,用于将javascript变量与另一个页面进行比较';什么内容?,php,javascript,compare,greasemonkey,Php,Javascript,Compare,Greasemonkey,Greasemonkey脚本是否可以将以下脚本的Name变量与其他站点的成员列表进行比较,并在Name与任何人不匹配时使其运行脚本的其他部分 //alert(Name); var postHistory = "http://"+regionSlice+".targetforum.com/board/search.php?do=process&searchuser="+Name+"&exactname=1&showposts=1"; var avatar = "http:

Greasemonkey脚本是否可以将以下脚本的
Name
变量与其他站点的成员列表进行比较,并在
Name
与任何人不匹配时使其运行脚本的其他部分

//alert(Name);
var postHistory = "http://"+regionSlice+".targetforum.com/board/search.php?do=process&searchuser="+Name+"&exactname=1&showposts=1";

var avatar = "http://othersite.com/forum/avatar/" +regionSlice+ "." + Name + ".png"; // creates an avatar

// Replace the old Avatar
$('.user_icon', this).attr('src', avatar);
$('.user_icon', this).wrap('<a href="' + postHistory + '" class="link"></a>');
$('.user_icon', this).attr('width', '80');
$('.user_icon', this).attr('height', '80');
$('.user_icon', this).attr('style', 'position:relative; TOP:7px');

othersite.com/forum/members.php上的成员列表:

<?php
    $con = mysql_connect("host","user","pass");
    if (!$con)
    {
        die('Could not connect: ' . mysql_error());
    }
    mysql_select_db("database", $con);

    $result = mysql_query("SELECT username FROM users ORDER BY ID");

    echo "<table border='0'>
<tr>
<th>UserName</th>
</tr>";

    while($row = mysql_fetch_array($result))
    {
        echo "<tr>";
        echo "<td>" . $row['username'] . "</td>";
        echo "</tr>";
    }
        echo "</table>";

mysql_close($con);
?>

使用以下代码获取名称:

// Replace everypost's avatar
$('.forum_post').each(function(index) {
    name = $('big', this).html();
    //alert($('big', this).html());
    var Name1 = name.replace("\<font ", "");
    var Name2 = Name1.replace("color\=\"\#c98f1a\"\>", "");
    var Name3 = Name2.replace("color=\"green\"\>", "");
    var Name4 = Name3.replace("color=\"red\"\>", "");
    var Name = Name4.replace("</font>", "");
//替换everypost的头像
$('.forum_post')。每个(功能(索引){
name=$('big',this.html();
//警报($('big',this.html());
var Name1=name.replace(“\”,“”);
var Name3=Name2.replace(“color=\“green\”\>,”);
var Name4=Name3.replace(“颜色=\”红色\“\>”,“”);
var Name=Name4.replace(“,”);

是的,您可以将
名称
与从另一个网页上刮取的内容进行比较。因为它看起来是跨域的,所以您必须使用

members.php的外观来看,它返回如下表:


用户名
用户A
用户B
用户C
用户D
没有别的。
(如果它返回其他内容,则需要调整以下代码中的选择器。)
我做了

如果安装此Greasemonkey脚本,您可以看到它读取用户名:

// ==UserScript==
// @name        _Parse simple AJAX page scrape/fetch
// @include     http://stackoverflow.com/*
// @require     http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @grant       GM_xmlhttpRequest
// ==/UserScript==

GM_xmlhttpRequest ( {
    method:     'GET',
    url:        'http://fiddle.jshell.net/TDcDV/show/',
    onload:     getUsernamesFromAjax
} );

function getUsernamesFromAjax (respObject) {
    var respDoc     = $(respObject.responseText);
    var userNameTDs = respDoc.find ("td");
    var userNames   = userNameTDs.map ( function () {
        return this.textContent;
    } ).get ();

    alert ("The usernames are: " + userNames);
}

(警报,“
用户名为:用户A、用户B、用户C、用户D
”)



现在,关于将
Name
与数据进行比较,问题还不清楚

  • 姓名从哪里来?
  • 是否有多个
    名称
    值?如果有,哪个
    。用户图标
    节点与哪个
    名称
    相关
  • 链接到整个页面


    更新:
    根据新信息,以下是您希望脚本执行的操作:

  • 用“正在进行”的图像(“throbber”)替换头像,让用户知道我们正在等待AJAX结果。
    (AJAX可能需要几秒钟的时间。)

  • 向外部站点启动成员列表的AJAX请求

  • 当AJAX返回成员列表时:

  • 对于成员列表中的姓名,请替换其头像
  • 对于不在成员列表中的姓名,将其头像替换为“无头像”图像

  • 这是一个完整的脚本,可以做到这一点。
    安装脚本,然后访问,查看其运行情况。

    // ==UserScript==
    // @name      _Replace avatars for matching names
    // @include   http://jsbin.com/awaxap/*
    // @include   http://YOUR_SERVER.COM/YOUR_PATH/*
    // @require   http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
    // @resource  waitImg  http://i.cdn.turner.com/money/.element/img/1.0/misc/throbber.gif
    // @grant     GM_xmlhttpRequest
    // @grant     GM_getResourceURL
    // ==/UserScript==
    
    //--- Replace avatars with an "In progress" image.
    var waitImgSrc  = GM_getResourceURL ("waitImg");
    $("div.forum_post div.avatar img.user_icon").attr ('src',  waitImgSrc);
    
    
    //--- Fetch the member list.
    GM_xmlhttpRequest ( {
        method:     'GET',
        url:        'http://fiddle.jshell.net/TDcDV/show/',
        onload:     changeUserIconsOfMembers
    } );
    
    
    //--- Replace avatars based on name match.
    function changeUserIconsOfMembers (respObject) {
        var respDoc     = $(respObject.responseText);
        var userNameTDs = respDoc.find ("td");
        var userNames   = userNameTDs.map ( function () {
            return $.trim (this.textContent.toLowerCase () );
        } ).get ();
    
        //--- Replace every post's avatar.
        $('div.forum_post').each ( function (index) {
            //-- text() automatically strips out any <font> cruft, if present.
            var Name        = $('div.avatar big', this). text ();
            //-- Standardize name for comparison.
            Name            = $.trim (Name).toLowerCase ();
    
            var regionSlice = "";   // where's this come from?
            var postHistory = "http://" + regionSlice
                            + ".targetforum.com/board/search.php?do=process&searchuser="
                            + Name + "&exactname=1&showposts=1"
                            ;
            var avatar      = "http://othersite.com/forum/avatar/" + regionSlice
                            + "." + Name + ".png"
                            ; // creates an avatar
    
            avatar  = "http://i.stack.imgur.com/Nrzn7.jpg"; // Temp avatar upgrade. ;)
    
            //--- Was the username not found?
            if (userNames.indexOf (Name) === -1 ) {
                avatar      = "http://other.com/forum/avatar/questionmark.png";
                avatar  = "http://i.stack.imgur.com/BbOsC.gif"; // Temp avatar upgrade. ;)
            }
    
            //--- Replace the old Avatar and give it a link to history.
            var userIcon    = $('div.avatar img.user_icon', this);
            userIcon.attr ( {
                src:        avatar,
                width:      '80',
                height:     '80',
                style:      'position:relative; TOP:7px;'
            } );
            userIcon.wrap ('<a href="' + postHistory + '" class="link"></a>');
        } );
    }
    
    /==UserScript==
    //@name\u替换匹配名称的化身
    //@包括http://jsbin.com/awaxap/*
    //@包括http://YOUR_SERVER.COM/YOUR_PATH/*
    //@需要http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
    //@resource waitImghttp://i.cdn.turner.com/money/.element/img/1.0/misc/throbber.gif
    //@grant GM_xmlhttpRequest
    //@grant GM_getResourceURL
    //==/UserScript==
    //---将化身替换为“正在进行”的图像。
    var waitImgSrc=GM_getResourceURL(“waitImg”);
    $(“div.forum\u post div.avatar img.user\u icon”).attr('src',waitImgSrc);
    //---获取成员列表。
    GMxmlHttpRequest({
    方法:“GET”,
    网址:'http://fiddle.jshell.net/TDcDV/show/',
    onload:changeUserIconsOfMembers
    } );
    //---根据名称匹配替换化身。
    函数changeUserIconsOfMembers(respObject){
    var respDoc=$(respObject.responseText);
    var userNameTDs=respDoc.find(“td”);
    var userNames=userNameTDs.map(函数(){
    返回$.trim(this.textContent.toLowerCase());
    }).get();
    //---替换每个帖子的头像。
    $('div.forum_post')。每个(功能(索引){
    //--text()会自动去除任何积垢(如果存在)。
    var Name=$('div.avatar big',this).text();
    //--标准化用于比较的名称。
    Name=$.trim(Name.toLowerCase();
    var regionSlice=“;//这是从哪里来的?
    var postHistory=“http://”+区域片
    +“.targetforum.com/board/search.php?do=process&searchuser=”
    +名称+“&exactname=1&showposts=1”
    ;
    var avatar=”http://othersite.com/forum/avatar/“+地区许可证
    +“+Name+”.png”
    ;//创建一个化身
    阿凡达=”http://i.stack.imgur.com/Nrzn7.jpg“;//临时化身升级。”
    //---找不到用户名吗?
    if(userNames.indexOf(Name)=-1){
    阿凡达=”http://other.com/forum/avatar/questionmark.png";
    阿凡达=”http://i.stack.imgur.com/BbOsC.gif“;//临时化身升级。”
    }
    //---替换旧的头像并给它一个历史链接。
    var userIcon=$('div.avatar img.user_icon',此图标);
    userIcon.attr({
    src:avatar,
    宽度:'80',
    高度:'80',
    样式:“位置:相对;顶部:7px;”
    } );
    userIcon.wrap(“”);
    } );
    }
    


    注意:找不到用户“Vortexer”,但找到了用户“B”。

    是的,您可以将
    名称
    与从另一个网页上抓取的内容进行比较。因为它看起来是跨域的,所以您必须使用它来执行此操作

    members.php的外观来看,它返回如下表:

    
    用户名
    用户A
    用户B
    用户C
    用户D
    
    没有别的。
    (如果它返回其他内容,则需要调整以下代码中的选择器。)
    我做了

    如果安装此Greasemonkey脚本,您可以看到它读取用户名:

    // ==UserScript==
    // @name        _Parse simple AJAX page scrape/fetch
    // @include     http://stackoverflow.com/*
    // @require     http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
    // @grant       GM_xmlhttpRequest
    // ==/UserScript==
    
    GM_xmlhttpRequest ( {
        method:     'GET',
        url:        'http://fiddle.jshell.net/TDcDV/show/',
        onload:     getUsernamesFromAjax
    } );
    
    function getUsernamesFromAjax (respObject) {
        var respDoc     = $(respObject.responseText);
        var userNameTDs = respDoc.find ("td");
        var userNames   = userNameTDs.map ( function () {
            return this.textContent;
        } ).get ();
    
        alert ("The usernames are: " + userNames);
    }
    

    (警报,“
    用户名为:用户A、用户B、用户C、用户D
    ”)



    现在,关于将
    Name
    与数据进行比较,问题还不清楚

  • 姓名从哪里来?
  • 是否有多个
    名称
    值?如果有,请选择哪个
    .user\i
    
    // ==UserScript==
    // @name      _Replace avatars for matching names
    // @include   http://jsbin.com/awaxap/*
    // @include   http://YOUR_SERVER.COM/YOUR_PATH/*
    // @require   http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
    // @resource  waitImg  http://i.cdn.turner.com/money/.element/img/1.0/misc/throbber.gif
    // @grant     GM_xmlhttpRequest
    // @grant     GM_getResourceURL
    // ==/UserScript==
    
    //--- Replace avatars with an "In progress" image.
    var waitImgSrc  = GM_getResourceURL ("waitImg");
    $("div.forum_post div.avatar img.user_icon").attr ('src',  waitImgSrc);
    
    
    //--- Fetch the member list.
    GM_xmlhttpRequest ( {
        method:     'GET',
        url:        'http://fiddle.jshell.net/TDcDV/show/',
        onload:     changeUserIconsOfMembers
    } );
    
    
    //--- Replace avatars based on name match.
    function changeUserIconsOfMembers (respObject) {
        var respDoc     = $(respObject.responseText);
        var userNameTDs = respDoc.find ("td");
        var userNames   = userNameTDs.map ( function () {
            return $.trim (this.textContent.toLowerCase () );
        } ).get ();
    
        //--- Replace every post's avatar.
        $('div.forum_post').each ( function (index) {
            //-- text() automatically strips out any <font> cruft, if present.
            var Name        = $('div.avatar big', this). text ();
            //-- Standardize name for comparison.
            Name            = $.trim (Name).toLowerCase ();
    
            var regionSlice = "";   // where's this come from?
            var postHistory = "http://" + regionSlice
                            + ".targetforum.com/board/search.php?do=process&searchuser="
                            + Name + "&exactname=1&showposts=1"
                            ;
            var avatar      = "http://othersite.com/forum/avatar/" + regionSlice
                            + "." + Name + ".png"
                            ; // creates an avatar
    
            avatar  = "http://i.stack.imgur.com/Nrzn7.jpg"; // Temp avatar upgrade. ;)
    
            //--- Was the username not found?
            if (userNames.indexOf (Name) === -1 ) {
                avatar      = "http://other.com/forum/avatar/questionmark.png";
                avatar  = "http://i.stack.imgur.com/BbOsC.gif"; // Temp avatar upgrade. ;)
            }
    
            //--- Replace the old Avatar and give it a link to history.
            var userIcon    = $('div.avatar img.user_icon', this);
            userIcon.attr ( {
                src:        avatar,
                width:      '80',
                height:     '80',
                style:      'position:relative; TOP:7px;'
            } );
            userIcon.wrap ('<a href="' + postHistory + '" class="link"></a>');
        } );
    }