Javascript 以编程方式将元素添加到模态对话框
我试图以编程方式将div元素添加到SP2010中的模态对话框中 以下是我已经尝试过的内容: 从母版页启动此功能:Javascript 以编程方式将元素添加到模态对话框,javascript,jquery,sharepoint-2010,modal-dialog,Javascript,Jquery,Sharepoint 2010,Modal Dialog,我试图以编程方式将div元素添加到SP2010中的模态对话框中 以下是我已经尝试过的内容: 从母版页启动此功能: function addDialogBanner(){ var dbody = $(".ms-dialog").find("div[id$='MSO_ContentDiv']"); var diaBanner = document.createElement('div'); diaBanner.
function addDialogBanner(){
var dbody = $(".ms-dialog").find("div[id$='MSO_ContentDiv']");
var diaBanner = document.createElement('div');
diaBanner.id = 'diaBanner';
$(dbody).prependChild(diaBanner);
$("#diaBanner").text("WOW. SUCH BANNER.");
}
function addNewItemFix() {
$(".ms-addnew").each(function () {
if ($(this).is("a")) {
var gReference = $(this).attr("href");
var options = {
title: "New Item",
url: gReference
};
$(this).attr("onclick", "javascript:SP.UI.ModalDialog.showModalDialog({title: 'New Item',url:'" + gReference + "', dialogReturnValueCallback:RefreshOnDialogClose}); addDialogBanner(); return false;");
}
});
}
它应该是这个的一部分(它被添加到onload函数数组中,也在母版页上):
我在中添加了该方法,因为自定义功能没有为新项目打开模式对话框。我遇到的问题是,我的脚本似乎是在模态对话框完成加载之前执行的,所以我的jQuery选择器都不存在。我想远离setTimeout
,因为加载时间并不总是一致的。此外,我有数百个站点和数千个库,使单个修复变得不可能
我这一路走错了吗?还是我遗漏了一些关键信息来让这一切顺利进行
2014年2月14日编辑:
我发现使用单独的方法调用
SP.UI.ModalDialog…
实际上不会调用对话框。它将弹出对话框,然后重定向到aspx页面。是否缺少某些内容?您可以通过编辑表单本身在SharePoint designer中的表单上插入脚本。
列表和库->选择列表->新建表单按钮
插入:
$(document).ready(function() {
//your scripts
});
表单上任意位置的内部脚本标记。在代码中使用jquerywhen函数 编辑-尝试以下操作:
$(this).attr("onclick", "javascript:$.when(SP.UI.ModalDialog.showModalDialog({title: 'New Item',url:'" + gReference + "', dialogReturnValueCallback:RefreshOnDialogClose})).then(function() {
addDialogBanner();
return false;
});");
但是,如果jQuery when函数不起作用,请尝试使用它。我有数百个站点和数千个列表需要同时编辑,扩展是不确定的。如果没有一大群复制粘贴者,在每一份清单上都插入这些内容是不可能的。对不起,我应该这么说。无论出于什么原因,这会在AddNewItem表单的顶部打开第二个模态对话框。当您关闭它时,它将执行回发并删除原始表单。我更改了代码,将代码应用于onclick of$(this)属性,就像您拥有它一样。它似乎仍在尝试执行,而不是等待事件触发。调试时出现错误
对象不支持属性或方法“showModalDialog”
。这可能有助于实际读取您编辑的内容。我做了更改,现在它完全绕过了模态对话框。它将加载,并且似乎直接重定向到aspx页面。