我一直在研究寻找一个脚本,让我能够在SP2016 On Prem中添加指向套件栏的链接。 SP2013有很多解决方案,但它们不能与SP2016一起使用(样式代码n功能改变了?)。
我找到了一个可行的方法但它在页面加载方面存在延迟(这是此脚本的常见问题)。我已经在Stack Exchange的另一个线程上找到了它的答案,但遗憾的是答案是将它包装在一些JS中我只是不知道如何做到这一点,答案没有显示完整的脚本所以我回到了正方形1 - (......任何人都可以帮助提供完成的脚本吗?
工作的初始脚本(但页面加载有延迟)
<script>
var raiseFunc = function() {
var link = document.createElement('a');
var linktext = document.createTextNode("Google");
link.href = "http://www.google.ca"
link.setAttribute("class", "o365button o365cs-nav-appTitle o365cs- topnavText");
var span = document.createElement('span');
span.appendChild(linktext);
span.setAttribute("class", "o365cs-nav-brandingText");
link.appendChild(span);
var temp = document.getElementById("Sites_BrandBar");
temp.parentElement.appendChild(link);
};
_spBodyOnLoadFunctions.push(raiseFunc);
</script>
APPARENT FIX (Add link to sharepoint suite bar - fail on first load)
尝试将添加链接添加到函数中并使用
SP.SOD.executeFunc('sp.js','SP.ClientContext', yourFunctionToInsertHere);
我相信在尝试添加之前,sp.js是没有加载的。这应该会延迟你的添加,直到它被加载。 (作者报告说这很有效)
===========================================
如何将此修复程序合并到原始脚本中?
非常感谢,朱莉 - )
答案 0 :(得分:1)
我这样做的方式,我是在你链接的问题中回答它的Matt,是我用户jquery的$(document).ready(function(){});
我的方式完全如下:
$(document).ready(function(){
SP.SOD.executeFunc('sp.js', 'SP.ClientContext', raiseFunc());
});
function raiseFunc() {
var link = document.createElement('a');
var linktext = document.createTextNode("Google");
link.href = "http://www.google.ca"
link.setAttribute("class", "o365button o365cs-nav-appTitle o365cs- topnavText");
var span = document.createElement('span');
span.appendChild(linktext);
span.setAttribute("class", "o365cs-nav-brandingText");
link.appendChild(span);
var temp = document.getElementById("Sites_BrandBar");
temp.parentElement.appendChild(link);
};
请记住,这是用于处理列表而不是我们为链接或主导航做的事情。我不能保证这会解决你的问题。如果你不能使用jQuery,那么我相信还有其他的工作时间。
答案 1 :(得分:0)
问题似乎是由于DOM未首次加载而未初始化。 所以我加时间来修复它。
<script type="text/javascript">
var raiseFunc = function () {
setTimeout(function () {
var link = document.createElement('a');
var linktext = document.createTextNode("Google");
link.href = "http://www.google.ca"
link.setAttribute("class", "o365button o365cs-nav-appTitle o365cs- topnavText");
var span = document.createElement('span');
span.appendChild(linktext);
span.setAttribute("class", "o365cs-nav-brandingText");
link.appendChild(span);
var temp = document.getElementById("Sites_BrandBar");
temp.parentElement.appendChild(link);
},500);
}
_spBodyOnLoadFunctions.push(raiseFunc);
</script>
即使我尝试过SP.SOD.executeFunc
,也存在问题。
<script type="text/javascript">
SP.SOD.executeFunc('SP.js', 'SP.ClientContext', function () {
var link = document.createElement('a');
var linktext = document.createTextNode("Google");
link.href = "http://www.google.ca"
link.setAttribute("class", "o365button o365cs-nav-appTitle o365cs- topnavText");
var span = document.createElement('span');
span.appendChild(linktext);
span.setAttribute("class", "o365cs-nav-brandingText");
link.appendChild(span);
var temp = document.getElementById("Sites_BrandBar");
temp.parentElement.appendChild(link);
});
</script>