Tôi có kịch bản để mở polyfill thoại:Làm thế nào để hiển thị nhiều hộp thoại chèn lấp?
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';
};
khi tôi gọi đây là kịch bản, thoại thân bị thay thế bằng url mới thay vì tạo ra hộp thoại mới. Làm thế nào tôi có thể tạo nhiều hộp thoại?
EDIT
Vấn đề lớn nhất của tôi là các hộp thoại của tôi có cùng một mẹ (gọi), do đó trong thư viện polyfill thoại js, có kịch bản để kiểm tra xem có các hộp thoại hay không trong tài liệu phụ huynh, nếu có, sau đó ném cảnh báo Failed to execute showModal on dialog: The element is already open, and therefore cannot be opened modally.
EDIT
tôi đã tạo ra jsfiddle, nhưng tôi không biết làm thế nào để gọi trang web nguồn bên ngoài từ jsfiddle. https://jsfiddle.net/godofrayer/gvLpLjkq/
[this] (https://github.com/niutech/showModalDialog/blob/gh-pages/showModalDialog.js) trợ giúp? –
tôi đang sử dụng mã đó từ anh ta, và vẫn không thể tạo nhiều hộp thoại. –
oh yeah, bạn đang sử dụng một phần của mã đó –