読者です 読者をやめる 読者になる 読者になる

生涯未熟

プログラミングをちょこちょこと。

Twitter公式ブックマークレットに好きな言葉を潜り込ませる方法

twitter JavaScript

Twitterでビジネスを加速する方法


Twitter公式ブックマークレットなんてのがあるのを知らなかったのでいじくってみた。
Twitter公式ブックマークレットこちらでGETだ!




やることはブックマークレットを使ったらテキストエリアに「現在のページのタイトル」と「短縮URL」が表示されるんですが、この中のタイトルをいじくろうという試みです。

まず、GETしてきたコードはこちら

javascript:(function(){window.twttr=window.twttr||{};var D=550,A=450,C=screen.height,B=screen.width,H=Math.round((B/2)-(D/2)),G=0,F=document,E;if(C>A){G=Math.round((C/2)-(A/2))}window.twttr.shareWin=window.open('http://twitter.com/share','','left='+H+',top='+G+',width='+D+',height='+A+',personalbar=0,toolbar=0,scrollbars=1,resizable=1');E=F.createElement('script');E.src='http://platform.twitter.com/bookmarklets/share.js?v=1';F.getElementsByTagName('head')[0].appendChild(E)}());

こんなの見てもわからねぇ!!ってなりますよね。私もそうなのでご心配なさらずに。

で、どんなとこいじるかの前にどう仕込んでるのかを説明します。
そんな説明イラネって方は飛ばしちゃってくだちぃ。


まずこのコードの中のhttp://platformに着目。
これ.jsまでの部分に飛ぶとJavaScriptのコードが読めるので読んじゃいます。

(function(){function B(L){var M=[],K=0,J=L.length;for(;K<J;K++){M.push(L[K])}return M}function G(J){return encodeURIComponent(J).replace(/\+/g,"%2B")}function C(L){var K=[],J;for(J in L){if(L[J]!==null&&typeof L[J]!=="undefined"){K.push(G(J)+"="+G(L[J]))}}return K.sort().join("&")}function H(){var K=document.getElementsByTagName("a"),Q=document.getElementsByTagName("link"),J=/\bme\b/,M=/^https?\:\/\/(www\.)?twitter.com\/([a-zA-Z0-9_]+)$/,P=B(K).concat(B(Q)),O,S,L,N=0,R;for(;(R=P[N]);N++){S=R.getAttribute("rel");L=R.getAttribute("href");if(S&&L&&S.match(J)&&(O=L.match(M))){return O[2]}}}function F(K){var J;if(K.match(/^https?:\/\//)){return K}else{J=location.host;if(location.port.length>0){J+=":"+location.port}return[location.protocol,"//",J,K].join("")}}function I(){var J=document.getElementsByTagName("link");for(var K=0,L;(L=J[K]);K++){if(L.getAttribute("rel")=="canonical"){return F(L.getAttribute("href"))}}return null}var D=(function(){var K={text:decodeURIComponent(document.title),url:(I()||location.href),_:((new Date()).getTime())};var J=H();if(J){K.via=J}return C(K)}());var E=window.twttr.shareWin,A="http://twitter.com/share?"+D;if(null===E){window.location.href=A}else{if(E&&E.open){E.location.href=A;E.focus()}}}());


素晴らしく意味が分かりませんね。
けど今やりたいのはテキストエリアに書きこむものを調べることなのでtextで検索すると

var K={text:decodeURIComponent(document.title),url:(I()||location.href),_:((new Date()).getTime())}

ってコードが見つかります。

簡単に言うとKの変数を連想配列にして色々と入れ込んでるって感じなんですが、ここのテキスト部分に干渉したいと思います。




さて、ここからがいじくり方。

まず、最初に提示したコードのE.srcの直前に

document.title="入れたい好きな文字"+document.title;

をいれちゃってください。


タイトルそのものを変えたい時は

document.title="入れたい好きな文字";


注意点としては元のページのdocument.title部分にも影響与えちゃうのでご注意を。



こういった既存の情報あるかなと思ったら無かったのでやっつけ仕事でやってみた、今では後悔している。