ページに道場ウィジェットを追加しようとしています。古いアプリケーションなので、dojo1.6を使用しています。ウィジェットは、HTMLテンプレートといくつかの追加オプションを定義するCSSファイルを含むjsファイルで定義されます。
私はJSPとJSPFを使用していますが、何らかの理由で(おそらく、2つの違いはありますか?)、<script>
使用しているJSPFファイルにタグを配置すると、ページの読み込み時にタグが実行されません。後でこれを整理し、その間に他のものをテストするために、スクリプトタグを実行するヘッダーJSPファイルにコードを配置することにしました。
dojo.require("x.y.z");
<div
id="testDiv"
dojoType="x.y.z" onclick="dojo.parser.parse()">abc</div>
これは私が望むように機能します。divがあり、それをクリックすると、定義したテンプレートを含むdojoウィジェットが読み込まれます。
JSPFファイルに、同じdiv(abc)を入れてから、同様のことを行いましたが、別の手順を実行します。
<div onclick="
dojo.require('x.y.z');
var n = document.createElement('div');
n.setAttribute('id', 'xyz');
n.setAttribute('dojoType', 'x.y.z');
n.setAttribute('onclick', 'dojo.parser.parse()')
n.innerHTML = 'Test';
document.body.appendChild(n);
">Click Me Please!</div>
私がこれを入れた理由は、私がabcを持っていたとき、Firebugで次のエラーが発生したためです。
Error parsing in _ContentSetter#Setter_1:13_0
Error: Could not load class 'x.y.z
Error undefined running custom onLoad code: This deferred has already been resolved
undefineddojo._scopeArgs = [undefined];
これは、JSPのときとは異なり、xyzがdojo.require'dでなかったためだと思いました。また、jspfでjavascriptを自動的に実行できなかったため、onclickと次に、同じことを実行して、テストして機能させるようにします。
2つ目のアイデアは、それをクリックして、以前からdivを表示できるようにする必要があるというものでした。それはrequirefineを実行し、divを作成するようですが、divをクリックすると表示されます
Tried to register widget with id==(numbers) but that id is already registered
だから、これは私がすべてに対してdojo.parser.parseを実行していて、すでにページ上にあるものをキャッチしていたためだと思いました-実際には、私が作成した新しいもので実行する必要があります。だから私はたった1つのことでdojo.parser.parseを行う方法を理解しようとしていました。1.8と1.7の情報は見つかりましたが、1.6は見つかりませんでした。どうすればこれを行うことができますか?私は物事を正しく理解し、適切な仮定を立てていますか?