jqueryプラグインを作成しています。これはChrome、Mozilla、IE 9では正常に機能しますが、IE 8/7では、「$ ctxObj.control2.val(opt.topicDefaultText);」の行でパーミッション拒否エラーが発生します。
Test.Plugin = function () {
var $ctxObj = {};
var opt = {};
var initEvents = function() {
$ctxObj.control2.val(opt.topicDefaultText);
$ctxObj.control2.on('click', function (e) {
somefunction();
});
$ctxObj.control1.on('click',function(){
anotherfunction();
});
};
return {
init: function (options) {
var defaultOptions = {
control1: '#control1',
control2: '#control2',
topicDefaultText:'test'
};
opt = $.extend({}, defaultOptions, options);
$ctxObj.control1 = $(opt.control1);
$ctxObj.control2 = $(opt.control2);
initEvents();
}
};
}();
以下のように各コントロールの変数を宣言すると、次のようになります。
var $ control1 = $('#control1');
var $ control2 = $('#control2');
次にコードを使用します
$control2.val(opt.topicDefaultText);
$control2.on('click', function (e) {
somefunction();
});
$control1.on('click',function(){
anotherfunction();
});
上記のコードを使用すると、IEでエラーは発生しませんが、このプラグインのように、非常に多くのコントロールがあるため、このようにしたくありません。