プロトタイプパターンを明らかにするjavascriptを学んでいます。ダイアログを定義するスクリプトと、ダイアログを使用するスクリプトの 2 つがあります。この JavaScript が $(dialogDiv) をスローすることを除いて、すべて正常に動作しているように見えますが、Firefox で定義されていませんか? ただし、スクリプトは IE と Chrome で正常に動作します。
プロトタイプの公開:
var Sandbox = Sandbox || { };
Sandbox.UI = Sandbox.UI || { };
Sandbox.UI.AjaxContentModalDialog = function(elementId, dialogOptions) {
this.dialogDiv = elementId;
this.options = dialogOptions;
};
Sandbox.UI.AjaxContentModalDialog.prototype = function () {
var open = function (methodName, url) {
$(dialogDiv).css("overflow", "hidden");
$(dialogDiv).dialog({
width: this.options.width,
height: this.options.height,
autoOpen: false,
resizable: false,
modal: true,
title: this.options.title,
buttons: {
Save: function () {
var form = $(options.formToPost);
$.ajax({
type: "POST",
url: form.attr('action'),
data: form.serialize(),
success: function (data, status, xhr) {
if (data.IsValid) {
$(dialogDiv).dialog('close');
$(dialogDiv).empty();
$(options.divToUpdate).empty();
$(options.divToUpdate).html(data.View);
} else {
$("#errorDiv").html(data.Message + "<br/>");
}
}
});
},
Cancel: function () {
$(dialogDiv).dialog('close');
$(dialogDiv).empty();
}
}
});
$.ajax(
{
Type: methodName,
url: url,
success: function (data, status, xhr) {
openDialog(data);
}
});
function openDialog(data) {
$(dialogDiv).html(data);
$(dialogDiv).dialog('open');
}
};
return {
open: open
};
} ();
消費者:
"use strict";
var options = { title: 'Edit User Profile Setting Value',
height: 180,
width: 375,
formToPost: '#userProfileSettingForm',
divToUpdate: '#userProfileDetail',
buttons: [{ text: "Ok" }, { text: "Cancel"}]
};
var dialog;
dialog = new Sandbox.UI.AjaxContentModalDialog('#dialogDiv', options);
$(document).ready(function () {
disableInheritLinks();
$('.Sandbox-udsActionLink').live("click", function (e) {
e.preventDefault();
dialog.open('get', this.href);
return false;
});
function disableInheritLinks() {
$('.Sandbox-disabled').each(function (item) {
this.href = '';
});
$('.Sandbox-disabled').live("click", function (e) {
e.preventDefault();
this.href = '';
console.log("disalbed: " + this.href);
return false;
});
}
});