2012-04-09 21 views

答えて

1

VIEW_DATAはおそらくメモリを節約するためにundefinedにリセットされています。 Gmailは閉鎖時にすべてのものをきれいに隠してしまい、グローバルな状況から難しいものになっているようです。

一つpossible- が、壊れやすいアプローチ - あなた自身のコンテキストでeval()それをあなたをさせる、あなたの元のスクリプトを与えることになる、VIEW_DATAが定義されている<script>要素のDOMを照会することです。たとえば、

// get all of the <script> elements on the page 
var scripts = document.getElementsByTagName('script'), 
    thisScript, varViewDataPos, viewDataScript, viewData 
; 

// loop through each one looking for VIEW_DATA being defined 
for(var i = 0; i < scripts.length; i++) { 
    thisScript = scripts[ i ].textContent; 
    varViewDataPos = thisScript.indexOf('var VIEW_DATA='); 

    if(varViewDataPos >= 0) { 
    // might as well toss everything before VIEW_DATA is defined 
    viewDataScript = thisScript.slice(varViewDataPos); 
    break; 
    } 
} 

// eval what we found (if anything), but in a closure to avoid polluting 
// the global namespace 
viewData = (function(script) { 
    eval(script); 
    return VIEW_DATA; 
})(viewDataScript); 

console.log(viewData || 'Oops, script not found.'); 

私が言ったように、スクリーンスクレイピングのように、これは非常に脆弱です。 Googleがあなたの周りの何かを動かすと、あなたは望んでいないことを突然見ているかもしれません。例えば、関数呼び出しがページを壊すことになります。自己責任で使用してください。

DOMで探しているデータを見つけようとするなど、最終的には他の方法が賢明かもしれません。

+0

Splendid!どうもありがとう。 –