如何使用JavaScript向SharePoint模式添加按钮?
我有一个模态要显示,它显示得很好。我试图在模式中添加一个按钮,该按钮应该启动acceptTerms()函数,存储cookie,然后关闭模式 我正努力在模态上找到一个按钮。它添加了HTML,我可以在源代码中看到它,只是没有出现 我在Web部件中尝试过类似的内容:如何使用JavaScript向SharePoint模式添加按钮?,javascript,sharepoint,Javascript,Sharepoint,我有一个模态要显示,它显示得很好。我试图在模式中添加一个按钮,该按钮应该启动acceptTerms()函数,存储cookie,然后关闭模式 我正努力在模态上找到一个按钮。它添加了HTML,我可以在源代码中看到它,只是没有出现 我在Web部件中尝试过类似的内容: var acceptBtn = '<input type="button" style="width:75px;" value="I Accept" onclick="acceptTerms()">'; $('body').a
var acceptBtn = '<input type="button" style="width:75px;" value="I Accept" onclick="acceptTerms()">';
$('body').append(acceptBtn);
var acceptBtn='';
$('body').append(acceptBtn);
以下是Web部件JS:
<script language="javascript" type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
<script language="javascript" type="text/javascript">
$(document).ready(function() {
SP.SOD.executeFunc('sp.js', 'SP.ClientContext', showModalPopUp);
});
var agreed = document.cookie.replace(/(?:(?:^|.*;\s*)Acknowledged\s*\=\s*([^;]*).*$)|^.*$/, "$1");
if(!agreed) {
function showModalPopUp() {
//Set options for Modal PopUp
var options = {
url: '/path/to/my/terms/page.aspx', //Set the url of the page
title: 'Terms', //Set the title for the pop up
allowMaximize: false,
autosize: true,
showClose: true,
width: 600,
height: 400,
};
//Invoke the modal dialog by passing in the options array variable
SP.SOD.execute('sp.ui.dialog.js', 'SP.UI.ModalDialog.showModalDialog', options);
return false;
}
}
function acceptTerms() {
var d = new Date();
var expire = new Date(d);
expire.setDate(d.getDate() + 365);
document.cookie = "Acknowledged=true; Path=/; Expires="+expire;
SP.UI.ModalDialog.commonModalDialogClose(SP.UI.DialogResult.Yes);
}
$(文档).ready(函数(){
SP.SOD.executeFunc('SP.js','SP.ClientContext',showModalPopUp);
});
var agreed=document.cookie.replace(/(?:(?:^ |。*;\s*)已确认\s*=\s*([^;]*).$)|.*$/,“$1”);
如果(!同意){
函数showModalPopUp(){
//设置模式弹出窗口的选项
变量选项={
url:'/path/to/my/terms/page.aspx',//设置页面的url
标题:'术语',//设置弹出窗口的标题
allowMaximize:false,
自动调整大小:正确,
showClose:没错,
宽度:600,
身高:400,
};
//通过传入options数组变量来调用模态对话框
SP.SOD.execute('SP.ui.dialog.js','SP.ui.ModalDialog.showModalDialog',选项);
返回false;
}
}
函数接受项(){
var d=新日期();
var到期=新日期(d);
expire.setDate(d.getDate()+365);
document.cookie=“Acknowledged=true;Path=/;Expires=“+expire;
SP.UI.ModalDialog.commonModalDialogClose(SP.UI.DialogResult.Yes);
}
因此,在定义要显示的html的选项中,您为模态提供了一些选项 url: '/path/to/my/terms/page.aspx' url:“/path/to/my/terms/page.aspx” 因此,所有想要显示的html和JS逻辑都应该在这个页面中 另一种方法,但我想不是最好的方法是使用jQuery技巧将按钮添加到模式布局中(但请注意,这不是推荐的方式,因为SharePoint modal framework应该允许在定义的布局中显示您输入的html,因此这不是修改布局的最佳选项。正如我前面所说,您的逻辑应该在您传递的html(aspx)页面中) 所以诀窍是这样做: $(document).ready(function() { SP.SOD.executeFunc('sp.js', 'SP.ClientContext', showModalPopUp); }); var agreed = document.cookie.replace(/(?:(?:^|.*;\s*)Acknowledged\s*\=\s*([^;]*).*$)|^.*$/, "$1"); if(!agreed) { function showModalPopUp() { createModal() $("#dlgTitleBtns .ms-dlgCloseBtn").before(""); $("#dialogTitleSpan").attr("style","width:auto;"); } } function createModal() { //Set options for Modal PopUp var options = { url: '/path/to/my/terms/page.aspx', //Set the url of the page title: 'Terms', //Set the title for the pop up allowMaximize: false, autosize: true, showClose: true, width: 600, height: 400, }; //Invoke the modal dialog by passing in the options array variable SP.SOD.execute('sp.ui.dialog.js', 'SP.UI.ModalDialog.showModalDialog', options); } function acceptTerms() { var d = new Date(); var expire = new Date(d); expire.setDate(d.getDate() + 365); document.cookie = "Acknowledged=true; Path=/; Expires="+expire; SP.UI.ModalDialog.commonModalDialogClose(SP.UI.DialogResult.Yes); } $(文档).ready(函数(){ SP.SOD.executeFunc('SP.js','SP.ClientContext',showModalPopUp); }); var agreed=document.cookie.replace(/(?:(?:^ |。*;\s*)已确认\s*=\s*([^;]*).$)|.*$/,“$1”); 如果(!同意){ 函数showModalPopUp(){ createModal() 美元(“#dlgTitleBtns.ms dlgCloseBtn”)。在(“”)之前; $(“#dialogTitleSpan”).attr(“样式”,“宽度:自动;”); } } 函数createModal() { //设置模式弹出窗口的选项 变量选项={ url:'/path/to/my/terms/page.aspx',//设置页面的url 标题:'术语',//设置弹出窗口的标题 allowMaximize:false, 自动调整大小:正确, showClose:没错, 宽度:600, 身高:400, }; //通过传入options数组变量来调用模态对话框 SP.SOD.execute('SP.ui.dialog.js','SP.ui.ModalDialog.showModalDialog',选项); } 函数接受项(){ var d=新日期(); var到期=新日期(d); expire.setDate(d.getDate()+365); document.cookie=“Acknowledged=true;Path=/;Expires=“+expire; SP.UI.ModalDialog.commonModalDialogClose(SP.UI.DialogResult.Yes); } 或者类似的:)。。。请注意,我没有对此进行测试,但这应该会让您了解该方法。
类似的解决方案也可以在这里找到->您是否尝试在web部件中添加按钮而不附加它<代码>我接受然后你的脚本?