javascript - 如何使用 JavaScript 将按钮添加到 SharePoint 模式?
问题描述
我有一个模式要显示,它显示得很好。我正在尝试向模态添加一个按钮,该按钮应该触发 acceptTerms() 函数,存储 cookie,然后关闭模态。
我正在努力在模式上获得一个按钮。它添加了 HTML,我可以在源代码中看到它,只是没有出现。
我在 WebPart 中尝试过这样的事情:
var acceptBtn = '<input type="button" style="width:75px;" value="I Accept" onclick="acceptTerms()">';
$('body').append(acceptBtn);
这是 WebPart 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);
}
解决方案
所以您正在使用一些选项来呈现模态,在选项中您定义要显示的 html
网址:'/path/to/my/terms/page.aspx'
所以所有你想展示的 html 和 JS 逻辑都应该在这个页面中。
另一种方式,但我想不是最好的方法是使用 jQuery 技巧将按钮添加到模态布局(但请注意,这是相当不推荐的方式,因为 SharePoint 模态框架应该允许在定义的布局中显示您输入的 html,所以这不是修改布局的最佳选择。正如我之前所说,您的逻辑应该在您传递的html(aspx)页面中)所以诀窍是这样做:
$(文档).ready(函数() { SP.SOD.executeFunc('sp.js', 'SP.ClientContext', showModalPopUp); }); var 同意 = document.cookie.replace(/(?:(?:^|.*;\s*)Acknowledged\s*\=\s*([^;]*).*$)|^.*$ /, "$1"); 如果(!同意){ 函数 showModalPopUp() { 创建模态() $("#dlgTitleBtns .ms-dlgCloseBtn").before(""); $("#dialogTitleSpan").attr("style","width:auto;"); } } 函数 createModal() { //设置Modal PopUp的选项 变量选项 = { url: '/path/to/my/terms/page.aspx', //设置页面的url title: 'Terms', //设置弹窗的标题 允许最大化:假, 自动调整大小:真, 显示关闭:真, 宽度:600, 身高:400, }; //通过传入options数组变量调用模态对话框 SP.SOD.execute('sp.ui.dialog.js', 'SP.UI.ModalDialog.showModalDialog', 选项); } 函数接受条款(){ var d = 新日期(); 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); }
或类似的东西:)...请注意我没有对此进行测试,但这应该让您了解该方法。可以在这里找到类似的解决方案 ->链接
推荐阅读
- java - 获取 Play Framework 与 Gradle 和 IntelliJ Idea 一起使用
- php - zend-expressive-api 已经全部设置好了。我怎样才能让它在我的 apache 网络服务器上工作?
- java - Spring-Boot JAR 中的 BOOT-INF 和 META-INF 目录是什么?
- python - 如何根据 Python 数据框中的每月观察结果计算 12 个月的回报?
- c# - 使用反射创建通用委托
- php - 如何使用 PHP 和 OpenSSL 生成自签名证书
- flutter - Flutter 为对话框添加更多选项
- numpy - 如何在 IronPython for Revit API 中使用 NumPy?
- php - 如何跳过 http 状态为 404 或 401 的图像?
- php - 如何在function.php中使用wordpress钩子打开新页面?