翻訳(エキサイト)
by
STAR_ZERO
2010-06-02 [2010/06/02 14:48:03]
選択されている文字列をエキサイトで翻訳(英→日)します。
@@ -1,10 +1,40 @@
/*
* @title 翻訳(エキサイト)
- * @description 選択されている文字列をエキサイトで翻訳(英→日)します。frame等には未対応です。
+ * @description 選択されている文字列をエキサイトで翻訳(英→日)します。
* @include http://*
* @license MIT License
* @require
*/
(function() {
- window.open('http://www.excite.co.jp/world/english/?before=' + document.getSelection());
+
+ var t = getSelectionValue(window);
+ if (!t) {
+ if (frames.length) {
+ for (var i = 0; i < frames.length; i++) {
+ t = getSelectionValue(frames[i]);
+ if (t)break;
+ }
+ }
+ }
+ window.open('http://www.excite.co.jp/world/english/?before=' + t);
+
+ function getSelectionValue(w) {
+ var t = (w.document.getSelection)?w.document.getSelection().toString():w.document.selection.createRange().text;
+ if (!t) {
+ var elms = w.document.getElementsByTagName('*');
+ for (var i = 0; i < elms.length; i++) {
+ var el = elms[i];
+ var tag = el.tagName.toLowerCase();
+ if (el.tagName.toLowerCase() == 'textarea' || (el.tagName.toLowerCase() == 'input' && el.type.toLowerCase() == 'text')) {
+ var s = el.selectionStart;
+ var e = el.selectionEnd;
+ if (s != e) {
+ t = el.value.substring(s, e - s);
+ break;
+ }
+ }
+ }
+ }
+ return t;
+ }
})()
/*
* @title 翻訳(エキサイト)
* @description 選択されている文字列をエキサイトで翻訳(英→日)します。
* @include http://*
* @license MIT License
* @require
*/
(function() {
var t = getSelectionValue(window);
if (!t) {
if (frames.length) {
for (var i = 0; i < frames.length; i++) {
t = getSelectionValue(frames[i]);
if (t)break;
}
}
}
window.open('http://www.excite.co.jp/world/english/?before=' + t);
function getSelectionValue(w) {
var t = (w.document.getSelection)?w.document.getSelection().toString():w.document.selection.createRange().text;
if (!t) {
var elms = w.document.getElementsByTagName('*');
for (var i = 0; i < elms.length; i++) {
var el = elms[i];
var tag = el.tagName.toLowerCase();
if (el.tagName.toLowerCase() == 'textarea' || (el.tagName.toLowerCase() == 'input' && el.type.toLowerCase() == 'text')) {
var s = el.selectionStart;
var e = el.selectionEnd;
if (s != e) {
t = el.value.substring(s, e - s);
break;
}
}
}
}
return t;
}
})()
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。