我正在尝试以编程方式将div元素添加到SP2010中的模态对话框中。
以下是我已经尝试过的内容:
此功能从主页面触发:
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.");
}
应该背负这个(它被添加到onload函数数组,也在主页面上):
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;");
}
});
}
我添加了该方法,因为自定义功能没有打开新项目的模式对话框。我遇到的问题是,在模式对话框甚至完成加载之前,我的脚本似乎正在执行,所以我的jQuery选择器都没有存在。我希望远离setTimeout
,因为加载时间并不总是一致的。同样,我有数百个网站和数千个图书馆,这些图书馆无法进行个别修复。
我这样做的整个方式是错的吗?或者我错过了一些关键信息来使这个工作?
EDIT 2/14/14:
我发现使用单独的方法调用SP.UI.ModalDialog...
实际上不会调用对话框。它将拉出对话框,然后重定向到aspx页面。有什么我想念的吗?
答案 0 :(得分:1)
在代码中使用jQuery函数。 jQuery When
编辑 - 试试这个:
$(this).attr("onclick", "javascript:$.when(SP.UI.ModalDialog.showModalDialog({title: 'New Item',url:'" + gReference + "', dialogReturnValueCallback:RefreshOnDialogClose})).then(function() {
addDialogBanner();
return false;
});");
但是,当函数不起作用时,请使用jQuery。
答案 1 :(得分:0)
您可以通过编辑表单本身在SharePoint设计器中的表单上插入脚本。 列表和库 - >选择列表 - >新表单按钮
插入:
$(document).ready(function() {
//your scripts
});
表单内任何位置的脚本标记。