2012-01-29 72 views
0

以下是此Google Chrome浏览器扩展程序的基本代码。如果您希望看到该扩展程序的实际运行情况,请将其从网上商店下载下来,以便了解它的工作原理。 Extension Link

function checkForHat() { 
    $.get (
     'http://www.roblox.com/User.aspx?ID=1', 

     function parse(data) { 
      $(data).ready(function() { 
       var epicness = $(data).find('#ctl00_cphRoblox_rbxUserAssetsPane_AssetCategoryRepeater_ctl02_AssetCategorySelector'); 
       var epiclink = epicness.attr('href'); 
       eval(epiclink) 
       var hatid1 = $(data).find('#ctl00_cphRoblox_rbxUserAssetsPane_UserAssetsDataList_ctl00_AssetThumbnailHyperLink'); 
       var hatidtitle1 = hatid1.attr('title'); 
       var hatidhref1 = "http://www.roblox.com" + hatid1.attr('href'); 
       var hatidpi1 = $(hatid1).find('img') 
       var hatidpic1 = hatidpi1.attr('src') 
       hatLink1 = hatidhref1; 
       hatTitle1 = hatidtitle1; 
       hatPic1 = hatidpic1; 
       var hatid2 = $(data).find('#ctl00_cphRoblox_rbxUserAssetsPane_UserAssetsDataList_ctl01_AssetThumbnailHyperLink'); 
       var hatidtitle2 = hatid2.attr('title'); 
       var hatidhref2 = "http://www.roblox.com" + hatid2.attr('href'); 
       var hatidpi2 = $(hatid2).find('img') 
       var hatidpic2 = hatidpi2.attr('src') 
       hatLink2 = hatidhref2; 
       hatTitle2 = hatidtitle2; 
       hatPic2 = hatidpic2; 
       var hatid3 = $(data).find('#ctl00_cphRoblox_rbxUserAssetsPane_UserAssetsDataList_ctl02_AssetThumbnailHyperLink'); 
       var hatidtitle3 = hatid3.attr('title'); 
       var hatidhref3 = "http://www.roblox.com" + hatid3.attr('href'); 
       var hatidpi3 = $(hatid3).find('img') 
       var hatidpic3 = hatidpi3.attr('src') 
       hatLink3 = hatidhref3; 
       hatTitle3 = hatidtitle3; 
       hatPic3 = hatidpic3; 
       if (hatLink3 != null && hatTitle3 != null && hatPic3 != null) { 
        checkIfNew3(); 
       } 
       if (hatLink2 != null && hatTitle2 != null && hatPic2 != null) { 
        checkIfNew2(); 
       } 
       if (hatLink1 != null && hatTitle1 != null && hatPic1 != null) { 
        checkIfNew1(); 
       } 
      }); 
     } 
    ); 
}; 

如果你注意到开始我有一个评估声明。我认为这只适用于实际的扩展本身,但我想要做的是使用:$.get。有没有办法加载该网页,并在该网页上切换标签页,如果有,如何? (这些标签位于名为Gear,Shirts,Pants等的底部)

+1

什么是eval应该做的? – nnnnnn 2012-01-29 03:46:52

回答

1

我再次无法发表评论。所以我坚持这样。

你为什么在URL上使用eval? Eval只能执行有效的JavaScript。这是一个强大但危险的程序。

你要求加载一个网页,我看你使用jQuery。我不知道你在努力达到什么目的。而且我不想暂时安装这个扩展,因为这太耗时。但是,您可以使用$.ajax以任何您想要的格式加载内容,包括纯文本和整个HTML树。这非常强大,因为它允许您在后台加载网站,并且在用户不知道的情况下进行一些流程简化。

如果您提供更多信息,我可以为您的案例创建一个场景。

EDITH:

我现在的工作我的方式,通过脚本,发现一种以编程方式更改选项卡。但我不知道你是否可以使用它。我不确定网站如何获取信息。你将不得不做一些测试。

然而,这是我想出:

你要调用的函数WebForm_DoPostBackWithOptions,使一种模式,所有可用的选项卡。例如,请求齿轮选项卡的内容,谷歌浏览器,请尝试执行这个小片段:

// Save a pattern. We will have to replace the %n toward the end of the string. 
var pattern = "ctl00$cphRoblox$rbxUserAssetsPane$AssetCategoryRepeater$ctl%n$AssetCategorySelector"; 

WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(pattern.replace('%n', '02'), '', true, '', '', false, true)); 

我希望内容是使用AJAX加载的,所以你可能发现,从加载内容的URL 。这个网站让我很困惑。它提交一个表单有效地加载新的内容,无需重新加载和onsubmit处理程序?我在这里没有看到任何AJAX。如果开发者打算隐瞒他的代码,他完全成功了。

你会想要考虑我的其他帖子之一here关于内容脚本的范围,以及如何绕过对网站变量和功能的访问限制。

我希望你能用这个工作。如果你真的想完成这个扩展,我相信你会找到一个方法。但说实话,这对于我将在短短几分钟内处理的事情来说太费事了。

+0

当我加载网页(http://www.roblox.com/User.aspx?ID=1)时,它会加载在帽子选项卡上,所以我很容易从它获得所需的一切,但我可​​以由于他们的编码方式,他们没有得到任何与Gear,Pants,Shirts等相关的东西。这对我来说是一种极端的痛苦,因为实际上没有真正的方法来切换标签到设备。他们似乎正在加载内容,因为您点击了标签并且没有隐藏它。如果你愿意,我可以链接到一个Ajax教程? – Jopc67 2012-01-29 03:51:41

+0

我检查了网站,我现在明白你为什么要“评估”href属性。给我一些时间,我会通过脚本稍微查看一下,然后我可以提供更好的解决方案。不过,我已经使用[this](http://www.tizag.com/ajaxTutorial/)教程,因为AJAX仍然不常见,但刚刚发现w3schools还提供了[教程](http:// www。 w3schools.com/ajax/default.asp)。 – Kiruse 2012-01-29 04:01:07

相关问题