いままで知らなかったのも恥ずかしい話ですが、Chromeの拡張機能中で
var iframe=document.createElement('iframe'); document.body.appendChild(iframe);
のように動的作成したIFRAMEのdocumentって、単に
console.log(iframe.contentDocument); // [object HTMLDocument]
のように、contentDocumentで普通にアクセスできたんですね…。
console.log(iframe.contentWindow); // undefined
なので、てっきりアクセスできないものと思い込んでいました。
マルチブラウザ対応するには、
var cdoc = iframe.contentDocument || iframe.contentWindow.document;
みたいにしておけばいいのか…。