S M T W T F S
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
カテゴリ
以前の記事

タグ:JavaScript ( 11 ) タグの人気記事

三項演算子のメモ

by dugong156 | 2010-03-17 01:26 | パソコンあれこれ
実際はif else使う場合はTest.Builder.globalScope = windowみたいに全部代入文にしないといけないしswitch文の場合はbreakも必要になるので、三項演算子を使ったほうが、はるかに短く書ける。
しかし、三項演算子でif elseを全部置き換えられるかというとそうでもなくて、returnとかcontinueとかbreakとか、値を返さない制御文の類を使うことはできない。

そうなのか。どうりでエラーになると思った‥‥。
[PR]

JavaScriptの正規表現の繰り返しの最短マッチ

by dugong156 | 2010-03-05 11:57 | パソコンあれこれ
楽天の商品ページとか、Amazonのページとか、買おうか迷ってるのはポンポンと「お気に入り」に登録してしまうので、ある程度サイトごとになるよう、例えば楽天だったら冒頭に「【楽】」って付けたり、Amazon だったら「【A】」って付けたり、タイトルがあまりに長いもので常套句みたいなのは省くような処理を、出来るだけパッと簡単に出来るように、Sleipnir2 のスクリプトにした物をショートカットを設定してる。

普通の正規表現もそうだけど、JavaScript の方の正規表現もいま一つ分かってなくて、時々上手く行かなくて検索する羽目になる。今日も上手く行かなくて(結果的には別のことが原因だったんだけど(* ̄▽ ̄;A←改行の「¥r¥n」が足りなかった)検索して1つ覚えた。私のことだから使わないと忘れてしまうだろうけど、取り敢えずメモ。

繰り返しには「*」とか「?」とか「+」とかあるけど、「+」だけだと最長マッチというのは何となく記憶にあったんだけど、その後に「?」を付けて「+?」にすると最短マッチになるんだそうな。

JavaScript講座 15章 JavaScriptでの正規表現 (in Knave Web講座
なるほど。

[PR]

ソースをコピーする

by dugong156 | 2009-07-14 21:50 | パソコンあれこれ
ずっと前にやってみようと思って、Sleipnir2 の [plugins] > [scripts] フォルダに入れたままになってた、ソースをクリップボードにコピーするスクリプトをちゃんと書いてみた。クリップボードにコピーするのは前に見つけたから、そのまま全体をコピーするのは直ぐに出来たんだけど、選択部分のソースをコピーするのが、どうやったらいいのか分からなくて一苦労。選択文字列は「document[ピリオド]selection.createRange().text」なんだけど‥‥。やっと、ブックマークレットに設定している方のブログを発見。分かってみると、text→htmlText に変えるだけだったんだけど、検索の仕方が悪かったのかな、なかなか見つけられなくて。

■胡瓜メモ帳: JavaScriptでhtmlの選択範囲のソースの取得する物
お陰さまで、これでショートカットが設定出来ますだ。ありがとうございます。


ソースをコピー

var window = _window,document = _document;
var pnir = sleipnir.API;

var dSource = document[ピリオド]getElementsByTagName("body")[0].parentNode.outerHTML;
window.clipboardData.setData("text",dSource);
ソースから文字列を拾ったりする時には、それこそ bodyタグの innerHTML で事足りるんだろうけど、少し前に「outerHTML」っていうのがあるって知ったので、それを使って全部コピーにした。

選択範囲のソースをコピー

var window = _window,document = _document;
var pnir = sleipnir.API;

var dSource = document[ピリオド]selection.createRange().htmlText;
window.clipboardData.setData("text",dSource);


ただ‥‥未だに「setData("text",)」の「"text"」の部分がどういうものなのかが分からない(* ̄▽ ̄;A。
[PR]

スクリプトにショートカットキーを割り当てる

by dugong156 | 2009-01-03 10:59 | パソコンあれこれ
正規表現がー((((; -_-)つ”(2009/01/01の日記)に書いてた、JsActions の中のスクリプトををショートカットで――というのは結局全然うんともすんとも言ってくれなくて駄目だったんだけど(未だ謎)、keyconfig のスクリプトに直接書くっていうのを試してみた。

そのまま書いても駄目なんだろうなと思っていたがやっぱり動かなかった。

■Firefox をあなた好みに改造! 「簡易 XUL 開発環境」
なるほど、window._content ですか。

逆に「window._content」で検索してみた。

通常のスクリプトでいう所の「window」や「(window.)document」は「window._content」「(window._content. または window.content.)document」とかになるらしい。逆に「window」「document」はソフトをいじくる時に使うみたい。上のリンク先からもリンクされているサイトだけどXUL Apps > Tips&Technics - outsider reflex辺りをじっくりと読まないといけないみたいな気が‥‥。(ま、取り敢えず置いておいて)



失敗したのを書き換えてみた。お!いけた(* ̄▽ ̄*)♪
おまけに、ちゃんと日本語の文字列も文字化けせずにいけるみたい。
更に検索結果をブラブラ。

■window - MDC
「content」にしてみた。


ひょっとして‥‥((* ̄▽ ̄*)。oO○"(いいように想像))
期待してやってみたけど正規表現の部分は同じだった‥‥orz.....何がいけないんだろう‥‥。まあ、いいんだけど‥‥最初にヒットするのってことは分かってるから。

こんな感じになった↓
[PR]

JavaScriptのreplace()

by dugong156 | 2008-12-29 10:04 | パソコンあれこれ
ずっと replace() の括弧の中は、""で区切った文字列だけだと思っていたんだけど、置換えが箇所が複数の時に1個しか置き換えられなかったので、調べたら、正規表現が使えるのだそう。

dDate = dDate.replace("-","/");
これだと1個だけしか置き換わらないけど、
dDate = dDate.replace(/-/g,"/");
こっちなら、全部置き換わる。

複数個の置換えをやったから気づいたけど、やらなかったらずっと知らないままだったのか‥‥。
[PR]

AutoPagerize for SeaHorseとVector

by dugong156 | 2008-12-26 09:39 | パソコンあれこれ
ここ1週間近く、SeaHorse と闘ってた。
結果は‥‥勝てた訳じゃないけど、一応一区切り付いたという感じ(無理やりつけた感じだけど‥‥)。

■AutoPagerize - 958 Wiki*
■AutoPagerize for SeaHorse (958lab)

楽天の検索結果で AutoPagerize が機能してないことに気づいて、Wiki のページから、「楽天 検索結果」をコピー&ペーストしてみたら動作から安心してたんだけど‥‥。最近になってまた動いてないことに気づいた。
改めて siteinfo.js を覗いて、「次」の所を楽天のリンク通りに「次の30件」にしてみたら動いた。たまたまほかのリンクに「次」があって迷ってしまったのかな。長くしておけばその分、迷うことも無いでしょう‥‥多分。「30件」を付けたら駄目な時もあるってことに今日気づいた(* ̄▽ ̄;A(遅っ!)「次の」も足した(2009/01/07(水)11:26追加)

これがきっかけで、ちょっと SITEINFO に興味が湧いて、利用方法などをもっとしっかり読んでみた。(microformats は全然解らなかったのでパスしたけど)
「jQueryセレクタで指定」っていう言葉が出てきて、どんなものか知らなかったので調べてみた。以前ユーザースタイルシートとかを設定する時に調べた、CSS のセレクタと意味合いというか機能というか、そういう点で似たようなものかなという印象だったけど、「jQuery」がそもそも分かってないので、検索。

■jQueryの魔法 - [JavaScript]All About

JavaScript を ON で見た方がいいかもしれん。関連した索引がずららららと下に表示されるので探しやすいから。しっかり読まないといけなかったんだろうけど、初めの方の取っ掛かりと、セレクタを中心にまばら読みした。

試しに読んでる内に URL の host 部分に「tag」が入っている時には対応してないみたいだったから、練習で書いてみた。(Wiki からコピペしたのにまとめればいいだけなんだろうけど、取り敢えず別にしておこっと)

{
//All About (http://tag.allabout用)
url: 'http://tag.allabout.co.jp/',
nextLink: 'div.next>a:contains("次へ")',
insertBefore: 'div#gsAllArticle+*,div#gsArticle+*,div#article+*',
pageElement: 'dl.clearfix'
},


ふむふむ‥‥少し分かってきた。
こうなるとですよ‥‥よく行くサイトで対応していない所があるからどうにかしたいなと思ってしまいます。フリーソフトを漁るのに利用することが多い Vector。上記の All About の記事で少しだけ分かった気分になってサイトの見てみると‥‥‥‥‥‥「次」ってのが無い‥‥orz.....。それでか‥‥それで無いんだ‥‥検索結果のしか‥‥。

つづく
[PR]

リンクテキストの一部をコピーしたい時はどうすれば

by dugong156 | 2008-08-17 23:25
---追記---(2008/08/17(日))

「activeElement」というのがあるのを知る。
これを使えば、リンクテキストも取得出来るみたいなので、書き直してみた。勉強勉強。文字化けは、文字コードを変えたらいけるのかなと思ったから、UTF-8N にしてみたんだけど駄目だった。プロンプト画面のメッセージの所の日本語って‥‥(T_T)?そしてまた「select」に戻す私‥‥。
document。→document[ピリオド] alert→alert

Firefox3

var seleTx;
var aE = document。activeElement;

if(document。getSelection()){
seleTx = document。getSelection();
}else{
seleTx = aE.text;
}
var searchTx = prompt("select",seleTx);
if(searchTx){
BrowserSearch.loadSearch(searchTx,true);
}

ただこれだと‥‥document。getSelection() で取得出来るのは、選択したソース内にタグが無ければいいんだけど、在った時は 一部のテキストしか取り出せない‥‥。Internet ExplorerSleipnir2は全部取得できる。

Sleipnir2

var pnir,id,window,document;

pnir = new ActiveXObject("Sleipnir.API");
id = pnir.GetDocumentID(pnir.ActiveIndex);
window = pnir.GetWindowObject(id);
document = pnir.GetDocumentObject(id);

if (document == null) {
pnir.MessageBox("Document オブジェクトを作成できません");
}
else {

var seleTx;
var aE = document。activeElement;
//alert(aE.innerText);


if(document。selection.createRange().text){
//当たり前だけど、「アンカー」のメニューに追加した時は選択範囲がリンクを含むテキストを選択している時は
//リンク上を右クリックしないとメニューが出てこない

seleTx = document。selection.createRange().text;
}else{
seleTx = aE.innerText;
}
var searchTx = prompt("select",seleTx);
searchTx = encodeURIComponent(searchTx);
if((searchTx != "null")&&(searchTx != "")){
//if(searchTx){//これだと駄目だった
//「キャンセル」や閉じるボタンの時は"null"、文字列を削除してOKした時は""でないと空文字列検索でタブが開いてしまう


pnir.NewWindow("http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&num=100&q=" + searchTx,false);
}
document = null;
}

pnir = null;

■その他のオブジェクト (in とほほのJavaScriptリファレンス


---追記---(2008/08/16(土))

最後の検索する所。これだと、キャンセルした時(値は null になるみたい)や文字列が無しの時にもウィンドウが開くことに気づく。(* ̄▽ ̄;A そういう時は何もしないようにしないといかんわな‥‥。

Firefox

if((searchTx != null)&&(searchTx != "")){
BrowserSearch.loadSearch(searchTx,true);
}


null と "" って、どちらも「false」だと思ってたんだけど‥‥。空文字の方を条件に入れないと、タブが開く‥‥。動きが違うのはなんでかな‥‥。

---書き始め---2008-07-23 11:25

検索しながらぶらぶらしてたら、アドオン - Firefox備忘録を読んで、 Copy Link Text というのがあると知った。右クリックしたら、リンクのテキストなどをコピーしてくれるものらしい。

そういえば‥‥と自分の経験を振り返ってみると、私の場合、リンク文字列全体というよりは、語句の意味が分からないので、リンク文字列の一部をコピーしたい――と思う時が何度かあって(そのままではどう考えても無理ではないかと思うんだが)‥‥それもどちらかの端からなら何とかなるんだけど、大抵は文字列の中辺りであってだな‥‥なのにどうにかやろうとして結局リンクを開いてしまい‥‥ということがあったなぁと。自分の馬鹿さ加減に呆れつつ、ふと、一部をコピー出来るようにメッセージの画面みたいなのが出るように出来んのかなと。JsActions に放り込んで使えるようなものは出来るのかなと思い立つ。

そういえば、この間 alert を使った時にウィンドウの文字列をコピー出来たから、コピーするだけなら「alert();」でもいいわけだな‥‥。リンクテキストというのはどうやって取得するんじゃろうか? ちょっと探しただけでは見つからなかったので、取り敢えず選択したテキストを取得することにしようっと。
alert(全角括弧)→alert[半角括弧]
document。→document[ぴりおど]

どうせなら、その文字列を適当に削ったら、その文字列を、デフォルトの検索エンジンで検索してみるまでやってみたらどうじゃろうか。

var seleTx = document。getSelection();
var searchTx = window.prompt("適当に削る",seleTx);
//trueは別ウィンドウで開くみたい。(SCRAPBLOG : [userChrome.js] 選択範囲内のすべてのURLをタブで開く、またはWeb検索する参照)
BrowserSearch.loadSearch(searchTx,true);

ん‥‥「適当に削る」が文字化けする‥‥( ̄▽ ̄;A)
・・・・・・・・s‥‥select とか書いておこう。

こんなことしなくても、全部コピーして検索ボックスに貼り付けて、削ればいいだけだけ――ではある。(* ̄▽ ̄;Ahæ
[PR]

textarea で選択している文字列を選択する

by dugong156 | 2008-08-17 16:15 | パソコンあれこれ
---追記---2008-12-31T08:59:02+09:00
タイトルの
textarea で選択している文字列を選択する検索する←選択してたら選択はされている‥‥orz.....。

時々投稿しようとしている textarea に貼り付けた URL を開こうと思うことがあるので、JsActions に入っていた「選択範囲をURLとして開く」が動かないのもあって、書き換えてみることにした。

■IE、テキストエリア内の選択範囲/キャレットの位置(文字数)を取得する - 戦争
■MSN相談箱 フォームのテキストをリンク化するjavascript

最初の内、カーソルがある textarea をどうやって取得したらいいのか分からず、for と getElementsByTagName とで全部取得してから、selectionStart とselectionEnd でごにょごにょやってみたけど、textarea が2つとかあるとどうもいかん。値が false ならば――で条件でやったんだけど、同じウィンドウで選択し直しすると、前の数値が残ってしまう‥‥。これではいかんということで、いっそのこと、コピーするようにしてみたらと思ったんだけど、コピーだけってどうやってするんだろう?(* ̄▽ ̄;A 検索してやっと見つけた。単語1つだった‥‥orz.....何という‥‥。

「javascript フォーカス」で検索したら「関連検索」に「javascript フォーカス 取得」が出てたのでそっちで検索したらあったあった。

■現在フォーカス(focus)しているテキストフォームのidと値を取得するコード(JavaScript)を教えてもらえれば幸いです。 - 人力検索はてな
「activeElement」ですか、なるほど。

seleoURL_inTA();
function seleoURL_inTA(){
var sText;
var aE = document。activeElement;
if(aE.selectionStart){
sText = aE.value.slice(aE.selectionStart,aE.selectionEnd);
}
//文字列の範囲を指定するのを探していて、substring 以外に
//slice があるのを知った。マイナス値で後ろから…が可能らしい。
//取り敢えず「httpを含む時には」という条件にした。
sText = aE.value.slice(aE.selectionStart,aE.selectionEnd);
if(sText.match(/http/))openNewTabWith(sText);
//gBrowser.loadOneTab( URL, referrerURI, charset, postData, loadInBackground, allowThirdPartyFixup); こっちの書き方でもいい訳で。
}

■文字列(String)#substring,#slice (in とほほのJavaScriptリファレンス
後ろを指定しないと残り全部とか、書き方は slice の方が簡単な気がする。
[PR]

メモ

by dugong156 | 2008-08-16 11:44 | パソコンあれこれ
■Core JavaScript 1.5 Reference:Functions - MDC (in Main Page - MDC
下の方に
このページは編集者または閲覧者により、技術レビューの必要があると判断されました。(改行)全体のレビューが終わるまで、不正確あるいは誤った情報を含む可能性があります。
とあった。要他でも確認?(2009/01/03)



■IE、テキストエリア内の選択範囲/キャレットの位置(文字数)を取得する - 戦争
[PR]

SeaHorseとGreaseMonkeyとStylishでごにょごにょ その2

by dugong156 | 2008-08-12 23:47 | パソコンあれこれ
一番身近なブログの投稿画面で練習してるんだけど、tdタグの中のテキストを参照するのに、Firefox3 だと上記 innerText や innerHTML がどうも動いてくれないみたいだからと、DOM とかいうやつの childNodes (←どうも今ひとつ分からん)で何とか頑張ってやったんだけど、文字列を検索するのに文字コードを Unicode にしないといけないことに気づき、ファイルを UTF-8N で保存――した所で、innerText や innerHTML でちゃんと動作しなかったのも、それが原因だったことに気づく‥‥orz.....Sleipnir2 から数えると何日費やしたか‥‥ぬぁぁぁぁ。試してみたら駄目だった‥‥(* ̄▽ ̄;Aもう駄目だ振り回されてる‥‥。

ユーザースタイルシートとスクリプトで変更してみたブログの投稿画面のサムネイル
この画面にするためにここ数日悪戦苦闘‥‥。textarea の幅はユーザースタイルシートで指定。既存の記事を編集で開いた時には、文字数いっぱいまで textarea を開く(高さを拡げる)ように。
[Enter] キーを押した時とかに自動拡大するようにしたいもんだという気持ちだけはあるんだけど力不足で出来ないので、JsActions や右クリックメニューでも利用できるようにしてるんだけど、Firefox3 と Sleipnir2 では scrollHeight というのを使った時の動きがちょっとだけ違うみたい。私の書き方が駄目なのかもしれないけど。
一旦、拡げた textarea の内容を削除して小さくした時、そのままの画面で JsActions とか 右クリックメニューでスクリプトを動作させると、Sleipnir2 では textarea は削除した分高さが低くなるけど、Firefox3 は高さはそのまま。余白は入れない状態の高さを取得するのってどうしたらいいんだろう??? 勿論、保存して編集で開き直せば余分な空白は出ないんだけど‥‥。元々の textarea の高さが出てきてただけだった。orz.....
じゃぁ、なして Sleipnir2 は小さくなるんだろう?

例えば‥‥ブログの投稿画面の textarea を拡げてみる


var d1 = document。getElementById("content");
if(d1){
//d1.style.height = "0px";
//これはFirefox3の時に入れてと。(それでも「cols="50" rows="25"」は残ってるけど。attributes.remove NamedItem() というのがあるらしいけどこれとか使えばいいんだろうか?)
var contH = d1.scrollHeight;
d1.style.height = ((contH < 200) ? "200px"
                                               : d1.scrollHeight + "px");
//こういう書き方らしい。参照URL↓
//三項演算子?:の正しい書き方(2009/01/03訂正)

}

例えば‥‥ブログ投稿画面で td タグの中の文字列から探して、その親の table を消してみる


alert(全角)→alert(半角)
var tTags = document。getElementsByTagName("td");
for(n = 0;n < tTags.length;n ++){
var tTcdn = tTags.item(n).childNodes;
for (i = 0;i < tTcdn.length;i ++){
var attrs = tTcdn.item(i).nodeValue;
var nTy = tTcdn.item(i).nodeType;
if((nTy == 3)&&(attrs.match(/トラックバックURL/))){
//何故か nty == 3 を省くとちゃんと消えなかったのは何でだろう?
//alert(tTags.item(n).parentNode.parentNode.parentNode.
//tagName);
//   ↑これで確認しないと分からん(* ̄▽ ̄;A

tTags.item(n).parentNode.parentNode.parentNode.style.display = "none";
}
}
}

Sleipnir2 だったらこっちが使えるので。
var tTags = document。getElementsByTagName("table");
for(n = 0;n < tTags.length;n ++){
if(!((tTags.item(n).innerHTML).match(/<table/i))){
if((tTags.item(n).innerText).match(/イメージを2つ以上アップする場合は/)||(tTags.item(n).innerText).match(/※ 改行区切りで最大3件まで指定できます。/)){
tTags.item(n).style.display = "none";
}
}
}




下のやつを投稿したらブログのレイアウトが崩れるので「その2」に分けたけどやっぱり崩れる。セキュリティ上駄目な document[ピリオド] は変更してるし、alert は無いし、おかしいなとほかの記号を変更してはプレビューすること2日。
何のこたぁない、if の条件の中にある table の前の<が原因だったorz.....。タグの記号ということをすっかり忘れてた。

[PR]
      

私の人生無駄ばかり…そんな日々。
by dugong156
タグ
検索
最新の記事
EPSON の廃インク吸収パ..
at 2017-04-05 15:31
ハードディスクの容量確保で散..
at 2016-11-29 09:29
Windows 7のCドライ..
at 2016-07-23 11:27
相方、Instagramにパ..
at 2016-07-22 15:24
Office のソフトって結..
at 2016-07-06 00:51
記事ランキング
ブログジャンル