2016-08-16 15 views
2

Firefoxのオーバーレイアドオンを維持しています。 Mozillaのアドオン検証プロセスをパスするには、innerHTML()をDOM要素のコンテンツを操作する呼び出しに置き換える必要があります。FirefoxオーバーレイアドオンでinnerHTML()コールを置き換えたい

私はテーブルの新しいセルを作成し、このアプローチを使用してコンテンツを設定したいと思います:

var newCell = tbl.rows[row].insertCell(col); 
var div = document.createElement('div'); 
div.appendChild(document.createTextNode(content)); 
newCell.appendChild(div); 

エラーメッセージは次のとおりです。ライン間のログメッセージを追加する

TypeError: Argument 1 of Node.appendChild does not implement interface Node. 

[email protected]://gre/modules/RemoteAddonsChild.jsm:461:5 

EventTargetChild/[email protected]://gre/modules/RemoteAddonsChild.jsm:431:38 

があることを示します新しいcelldiv要素のタイプは異なります。

var newCell = tbl.rows[row].insertCell(col); 
console.log("cell-0: " + newCell); 
var div = document.createElement('div'); 
console.log("div-0: " + div); 
div.appendChild(document.createTextNode(content)); 
console.log("div-1: " + div); 
console.log("cell-1: " + newCell); 
newCell.appendChild(div); 
console.log("cell-2: " + newCell); 

ログメッセージは以下のとおりです。

cell-0: [object CPOW [object HTMLTableCellElement]] 
div-0: [object XULElement] 
div-1: [object XULElement] 
cell-1: [object CPOW [object HTMLTableCellElement]] 

任意のアイデアは、私がここで間違ってやっているでしょうか?

ありがとうございます。

+0

申し訳ありませんが、私はFF 48を使用しています。これは動作します:https://jsfiddle.net/pj2eugLh/ – blex

+1

['HTMLTableRowElement.insertCell()'](https:// developer。 mozilla.org/en-US/docs/Web/API/HTMLTableRowElement/insertCell)を使用して、ノードをXULドキュメントに挿入しようとします。それはXUL要素の代わりにHTML要素を作成したようです。私たちはあなたが挿入している ''とそれが以前にどのように操作されたかについてもっと多くの情報を必要としています。アドオンの現在のバージョンへのリンクが役立ちます。 – Makyen

+0

@blexこれはXULドキュメントに挿入されています。 HTMLベースのサイト(例:jsfiddle.net)を使用して正確にプロトタイプを作成することはできません。XULをテストするには、ファイルがマシンのローカル(XUL Explorer)であるか、Mozillaベースのアプリケーション内で 'chrome://' URIを使用する必要があります。 – Makyen

答えて

1

細胞-0:[オブジェクトCPOW [オブジェクトHTMLTableCellElement]

CPOWは、子プロセスから、または少なくともメッセージパッシングAPIから来る意味し、cross process object wrapperあります。あなたはe10s-safeの方法でDOMにアクセスしていません。

DIV-0:[オブジェクトXULElement]

MorecoverあなたはXUL要素(モジラ固有のXML名前空間)を作成し、HTMLドキュメントに挿入しようとしています。これは、文書の境界を越えて操作していることを意味しています(CPOWは既にそれを意味します)。ローカルスコープのdocumentオブジェクトは、ownerDocumenttblではありません。

クロスプロセスの問題が存在しない場合でも、依然としてDOMを間違って使用しています。


あなたがmessage manager and frame scriptsを使うべきコンテンツドキュメントのDOMと対話します。 Addon SDKとwebextensionのコンテンツスクリプトをサポートする低レベルのプリミティブです。

また、あなたは互換性のシムを無効にするか、についてでdom.ipc.shims.enabledWarningsを可能にする<em:multiprocessCompatible>true</em:multiprocessCompatible>flag in the install.rdfを設定することができます。config、あなたがどんな危険なAPIにアクセスしようとしている場合はすぐにスローされる警告/エラーになるはずです。

関連する問題