MyMixi Them All
by
amachang
2010-05-18 [2010/05/18 00:29:06]
WebKit 系でしか動きません><
@@ -53,9 +53,9 @@
return iframe(el.href).
next(function(win) {
return xpath('//a[contains(@href, "add_friend.pl")]', win.document, function(el) {
-/*
return clickAndWait(el).
next(function(win) {
+/*
win.document.getElementById('message').value = 'よろしくおねがいします!';
var btnEls = win.document.getElementsByClassName('formBt01');
if (btnEls.length) {
@@ -68,8 +68,8 @@
else {
return wait(8);
}
- });
*/
+ });
});
});
}).
/*
* @title MyMixi Them All
* @description まだ作ってる中
* @include http://mixi.jp/
* @license MIT License
* @require JSDeferred
* @require jquery
* @require http://jquery-ui.googlecode.com/svn/trunk/tests/jquery.simulate.js
*/
Deferred = D();
Deferred.iframeEl_ = document.createElement('iframe');
document.body.insertBefore(Deferred.iframeEl_, document.body.firstChild);
Deferred.iframe = function iframe(url) {
console.log('Open URL: ' + url);
var d = new Deferred();
Deferred.iframeEl_.onload = function() {
Deferred.iframeEl_.onload = null;
var win = Deferred.iframeEl_.contentWindow;
console.log('Loaded: ' + url);
setTimeout(function() { d.call(win); }, 1);
};
Deferred.iframeEl_.src = url;
return d;
};
Deferred.xpath = function xpath(expr, ctx, callback) {
var doc = ctx.nodeType === 9 ? ctx : ctx.ownerDocument;
var r = doc.evaluate(expr, ctx, null, 7, null);
return Deferred.loop(r.snapshotLength, function (i) {
return callback(r.snapshotItem(i), r, i, expr);
});
};
Deferred.clickAndWait = function clickAndWait(el) {
console.log('Fire click: ' + el.tagName);
var d = new Deferred();
Deferred.iframeEl_.onload = function() {
Deferred.iframeEl_.onload = null;
var win = Deferred.iframeEl_.contentWindow;
console.log('Loaded: ' + win.location);
setTimeout(function() { d.call(win); }, 1);
};
jQuery(el).simulate('click');
return d;
};
with(Deferred) {
xpath('//a[contains(@href, "show_friend.pl")]', document, function(el) {
return iframe(el.href).
next(function(win) {
return xpath('//a[contains(@href, "add_friend.pl")]', win.document, function(el) {
return clickAndWait(el).
next(function(win) {
/*
win.document.getElementById('message').value = 'よろしくおねがいします!';
var btnEls = win.document.getElementsByClassName('formBt01');
if (btnEls.length) {
return clickAndWait(btnEls[0]).
next(function(win) {
jQuery(win.document.getElementsByClassName('formBt01')[0]).simulate('click');
return wait(8);
});
}
else {
return wait(8);
}
*/
});
});
});
}).
next(function() {
alert('finish!');
}).
error(function(e) {
alert('Error: ' + e.message + '\nStack: ' + e.stack)
console.log(e.message, e.stack)
});
}
void(0);
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。