Ich habe Skript Dialog polyfill zu öffnen:Wie zeigen Sie mehrere Dialog-Polyfill?
window.modalDialog = function (url, arg, opt) {
url = url || ''; //URL of a dialog
arg = arg || null; //arguments to a dialog
opt = opt || 'dialogWidth:300px;dialogHeight:200px'; //options: dialogTop;dialogLeft;dialogWidth;dialogHeight or CSS styles
var caller = modalDialog.caller.toString();
var dialog = document.body.appendChild(document.createElement('dialog'));
var splitter = opt.split(",");
dialog.setAttribute('style', splitter[0].replace(/dialog/gi, ''));
dialog.innerHTML = '<a href="#" id="dialog-close">×</a><iframe id="dialog-body" src="' + url + '" style="border: 0; width: 100%; height: 100%;"></iframe>';
document.getElementById('dialog-body').contentWindow.dialogArguments = arg;
document.getElementById('dialog-close').addEventListener('click', function (e) {
e.preventDefault();
dialog.close();
});
dialog = document.querySelector('dialog');
dialogPolyfill.registerDialog(dialog);
function addListeners() {
document.querySelector('dialog').addEventListener('mousedown', mouseDown, false);
window.addEventListener('mouseup', mouseUp, false);
}
function mouseUp()
{
window.removeEventListener('mousemove', divMove, true);
}
function mouseDown(e) {
window.addEventListener('mousemove', divMove, true);
}
function divMove(e) {
var div = document.querySelector('dialog');
div.style.position = 'absolute';
div.style.top = e.clientY + 'px';
div.style.left = e.clientX + 'px';
}
addListeners();
dialog.showModal();
dialog.addEventListener('close', function() {
var returnValue = document.getElementById('dialog-body').contentWindow.returnValue;
document.body.removeChild(dialog);
nextStmts[0] = nextStmts[0].replace(/(window\.)?modalDialog\(.*\)/g, JSON.stringify(returnValue));
eval('{\n' + nextStmts.join('\n'));
});
throw 'Execution stopped until modalDialog is closed';
};
, wenn ich den Skript aufrufen, dialog-Körper mit neuer URL ersetzt wurde anstelle neuen Dialog erstellen. Wie kann ich mehrere Dialoge erstellen?
EDIT
Mein größtes Problem ist, dass meine Dialoge die gleichen Eltern (Anrufer) hat, so im Dialog polyfill js Bibliothek gibt Skript ist zu prüfen, ob es Dialoge sind oder nicht in geordneten Dokument, wenn ja, dann werfen Failed to execute showModal on dialog: The element is already open, and therefore cannot be opened modally.
EDIT
ich die jsfiddle erstellt haben warnen, aber ich weiß nicht, wie von jsfiddle externen Website aufrufen. https://jsfiddle.net/godofrayer/gvLpLjkq/
hilft [this] (https://github.com/niutech/showModalDialog/blob/gh-pages/showModalDialog.js)? –
Ich benutze diesen Code von ihm und kann immer noch nicht mehrere Dialoge erstellen. –
oh yeah, du verwendest einen Teil dieses Codes –