Sharepoint Online,Javascript在Firefox中不起作用
Sharepoint Online, Javascript not working in Firefox
使用 JavaScript 制作 SharePoint 应用程序来管理数据级别。
这在IE和Chrome中可以找到,但在Firefox中没有任何作用,没有错误没有警告,只是没有行动!
function List_AddCompany() {
var ListName = "CompanyInfo";
var context = new SP.ClientContext.get_current();
var lstObject = context.get_web().get_lists().getByTitle(ListName);
var listItemCreationInfo = new SP.ListItemCreationInformation();
var newItem = lstObject.addItem(listItemCreationInfo);
newItem.set_item('CPY_ID', $('#CPY_ID').text());
newItem.set_item('CPY_Name', $('#CPY_Name').val());
newItem.set_item('CPY_OverDuePercentage', $('#CPY_OverDuePercentage').val());
newItem.update();
context.executeQueryAsync(Function.createDelegate(this, onSuccess),
Function.createDelegate(this, onFailure));
function onSuccess() {
console.log("Company added successfully");
}
function onFailure(sender, args) {
console.log("There was an error creating company", args);
}
}
任何想法都会很棒
我们遇到了同样的问题。
修复是将函数 onSuccess() 和函数 onFailure(sender, args) 带到函数 List_AddCompany() 之外
如果使用调试器在上下文之后单步执行当前代码,则调试器将登陆失败方法,并且不会进入方法内部,而是返回到调用函数,并将结束代码而不会出现任何错误。
function List_AddCompany() {
var ListName = "CompanyInfo";
var context = new SP.ClientContext.get_current();
var lstObject = context.get_web().get_lists().getByTitle(ListName);
var listItemCreationInfo = new SP.ListItemCreationInformation();
var newItem = lstObject.addItem(listItemCreationInfo);
newItem.set_item('CPY_ID', $('#CPY_ID').text());
newItem.set_item('CPY_Name', $('#CPY_Name').val());
newItem.set_item('CPY_OverDuePercentage', $('#CPY_OverDuePercentage').val());
newItem.update();
context.executeQueryAsync(Function.createDelegate(this, onSuccess),
Function.createDelegate(this, onFailure));
}
function onSuccess() {
console.log("Company added successfully");
}
function onFailure(sender, args) {
console.log("There was an error creating company", args);
}
按照
@Vaibhav的建议删除了所有内部函数,这使我能够很好地看到由此产生的问题。因此,为了解决这个问题,我编写了一个延迟代码块来处理所有添加,这似乎适用于跨浏览器(即使 MS 网站说另一种方式有效)
下面是延迟语句的代码及其用法。
function addListItems(listTitle, propertiesToAdd) {
var ctx = SP.ClientContext.get_current();
var web = ctx.get_web();
var list = web.get_lists().getByTitle(listTitle);
var listItemCreationInfo = new SP.ListItemCreationInformation();
var newItem = list.addItem(listItemCreationInfo);
propertiesToAdd.forEach(function (entry) {
newItem.set_item(entry.ID, entry.newval);
});
newItem.update();
var d = $.Deferred();
ctx.executeQueryAsync(function () {
d.resolve(true);
},
function (sender, args) {
d.reject(args);
});
return d.promise();
}
和使用代码
SP.SOD.executeFunc('SP.js', 'SP.ClientContext', function () {
var listTitle = 'List Name';
var propertiesToAdd = [];
propertiesToAdd.push({
ID: "Property Name",
newval: Property Value,
})
propertiesToAdd.push({
ID: "Property Name",
newval: Property Value,
})
addListItems(listTitle, propertiesToAdd)
.done(function (items) {
console.log("added successfully");
})
.fail(function (error) {
console.log("There was an error creating company", error);
});
});
相关文章:
- 为什么javascript:void(0)在Firefox中不起作用
- jpm的默认Firefox路径没有'不起作用
- 设置 CSS 背景在 Firefox 中不起作用
- document.getElementById 在 Firefox 中不起作用
- firefox中的CSS动画不起作用
- event.stopPropagation()在firefox javascript中不起作用
- 复选框.onClick在firefox中不起作用
- window.close();在Chrome和Firefox中不起作用
- JQuery在Chrome中不起作用,但Firefox很好
- 选择“行在 Chrome 和 Firefox 中不起作用(生成的代码)”
- Javascript 按键事件在 Firefox 中不起作用
- window.dispatchEvent 在 Firefox、Safari 或 IE 中不起作用
- 更改 Angular 2 中选择的事件在 Firefox 和 Edge 中不起作用
- jQuery SlideToggle() 在 FireFox 中不起作用,在 Chrome 中工作
- 动态关键帧插入在 IE 或 Firefox 上不起作用
- 使用 nameProp 的 JQuery 图像滚动更新在 Firefox 和 Chrome 中不起作用
- Javascript键码在Firefox中不起作用,但在chrome中运行良好
- HTML5<视频>元素在Firefox、Opera和Safari中不起作用
- 输入类型的图像在Internet Explorer中不起作用,但在Chrome和Firefox中起作用
- 使用量角器双击在chrome中效果良好,但在firefox中不起作用