以下是此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等。)
答案 0 :(得分:1)
我再也不能发表评论了。所以我坚持这样。
为什么在URL上使用eval? Eval只能执行有效的JavaScript。这是一个强大但危险的程序。
您要求加载网页,我发现您确实使用了jQuery。我不太清楚你想要达到的目的。我不想暂时安装此扩展,因为它太耗时。但是,您可以使用$.ajax
以您想要的任何格式加载内容,包括纯文本和整个HTML树。这非常强大,因为它允许您在后台加载网站并简化流程,而无需用户甚至不知道,例如。
如果您提供更多信息,我可以为您的案例创建一个场景。
EDITH:
我现在通过脚本工作,并找到了一种以编程方式更改选项卡的方法。但我不知道你是否可以使用它。我不确定网站如何获取信息。你将不得不做一些测试。
但是,这就是我想出来的:
您想调用函数WebForm_DoPostBackWithOptions
并为所有可用选项卡创建一个模式。例如,要在Google Chrome中请求Gears选项卡的内容,请尝试执行以下小代码:
// 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,以及如何绕过对网站变量和功能的访问限制。
我希望你能解决这个问题。如果你真的想完成这个扩展,我相信你会找到一种方法。但说实话,这对于我将要处理的事情只需要几分钟而付出太多的努力。