Java SE API リファレンス ドキュメント [ http://docs.oracle.com/javase/8/docs/api/ ]の簡単な Greasemonkey スクリプトを作成しています。次のようになります。
// ==UserScript==
// @id Test
// @grant none
// @include http://docs.oracle.com/javase/8/docs/api/*
// @version 1
// @run-at docuitment-end
// ==UserScript==
var classNamesFrame = null;
var classNamesDoc = null;
var classNamesATags = null;
var classNames = null;
function printClassNames()
{
classNamesATags = classNamesDoc.getElementsByTagName('a');
classNames = new Array();
var i;
for (i = 0; i < classNamesATags.length; i++) {
classNames.push(classNamesATags[i].textContent);
}
console.log(classNames);
console.log(classNamesDoc.URL);
console.log('Total number of classes: ' + classNamesATags.length);
alert("printClassNames called");
}
classNamesFrame = document.getElementsByName('packageFrame') [0];
classNamesDoc = classNamesFrame.contentDocument;
classNamesFrame.onload = printClassNames;
//classNamesFrame.addEventListener("DOMContentLoaded", printClassNames, false);
関数printClassNames()
は、すべてのクラスがリストされているフレームで見つかったすべてのクラスの名前を出力します。フレームの読み込みが完了したら、そうする必要があります。ただし、onload
イベントはフレームの HTML ドキュメントが読み込まれる前に呼び出されます。
DOMContentLoaded
イベントを使用してみましたが、呼び出されません。
printClassNames
フレームのロードが完全に終了した後に呼び出されるようにするにはどうすればよいですか?