MyMixi Them All
by
amachang
2010-05-18 [2010/05/18 00:29:06]
WebKit 系でしか動きません><
@@ -31,12 +31,12 @@
});
};
-Deferred.clickAndWait = function clickAndWait(el, iframeEl) {
+Deferred.clickAndWait = function clickAndWait(el) {
var d = new Deferred();
- iframeEl.onload = function() {
+ setTimeout(function() {
var win = iframeEl.contentWindow;
d.call(win);
- }
+ }, 4000);
jQuery(el).simulate('click');
return d;
};
/*
* @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.iframe = function iframe(url) {
var iframeEl = document.createElement('iframe');
iframeEl.src = url;
document.body.insertBefore(iframeEl, document.body.firstChild);
var d = new Deferred();
iframeEl.onload = function() {
var win = iframeEl.contentWindow;
d.call(win);
}
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) {
var d = new Deferred();
setTimeout(function() {
var win = iframeEl.contentWindow;
d.call(win);
}, 4000);
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) {
var iframeEl = win.frameElement;
return xpath('//a[contains(@href, "add_friend.pl")]', win.document, function(el) {
return clickAndWait(el, iframeEl).
next(function(win) {
win.document.getElementById('message').value = 'よろしくおねがいします!';
var btnEls = win.document.getElementsByClassName('formBt01')
if (btnEls.length) {
return clickAndWait(btnEls[0], iframeEl).
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 です。