【问题标题】:Sharepoint removing Javascript function callsSharepoint 删除 Javascript 函数调用
【发布时间】:2015-09-09 22:04:47
【问题描述】:

我正在尝试调用一个简单的 javascript 函数来隐藏或显示 Sharepoint 中的特定 div。我已在其中添加了带有该功能的脚本编辑器 Web 部件,但每当我保存时,锚标记都会删除 href。下面是我输入的代码。

Javascript:

<script type="text/javascript" charset="utf-8">
    function toggleDiv(divId) {
        $("#"+divId).toggle();
    }
</script>

HTML:

<a href="javascript:toggleDiv('answer1');">Show Answer 1</a>

保存后,Sharepoint 告诉我某些被 sharepoint 视为“不安全”的元素将被删除。重新加载时,它会删除 href,如下所示:

<a>Show Answer 1</a>

有什么想法可以让这个简单的功能发挥作用吗?

谢谢, 约旦

【问题讨论】:

  • 从脚本标签内部绑定事件,而不是使用内联 JS。给它一个 id、name 或其他一些确凿的证据来提供给 jQuery 选择器,然后.click(toggleDiv) 将设置其余部分。
  • 由于这将用于单个页面中的多个 divId,我是否需要为每个答案复制脚本以提供不同的参数?
  • 不,您只需将更多规则添加到选择器中,使用逗号分隔它们。例如:$("#div1, .clickers, a[href*=menu]").click(toggleDiv)

标签: javascript html sharepoint sharepoint-2013


【解决方案1】:

如果你有多个答案,你可以像这样创建一个简单的脚本(我注意到你正在使用 jQuery)

<script type="text/javascript" charset="utf-8">
$(document).ready(function(){
  $('a').click(function(){
     $('#' + $(this).data('answer')).toggle();
  });
 });
</script>

和 HTML:

<a data-answer="answer1">Show answer 1</a>
<a data-answer="answer2">Show answer 2</a>
...
<div id="answer1" style="display:none">Here answer 1</div>
<div id="answer2" style="display:none">Here answer 2</div>

更新:添加了ready function,因此脚本将仅在页面加载完成时运行

【讨论】:

  • 出于某种原因,这使得链接文本(显示答案 1)无法点击,即使它包含在锚标记中...
  • 您可以使用DIV 代替a 所以将是&lt;div data-answer="answer1"&gt;Show answer 1&lt;/div&gt; 或将HREF 添加到a 所以将是&lt;a href="#" data-answer="answer1"&gt;Show answer 1&lt;/a&gt;
  • 还是不行。我正在查看调试器并单击链接或 div 不会做任何事情。请原谅我的无知,但什么是“数据答案”?
  • 我不知道您使用的是哪个browser and OS,但脚本是正确的并且在这两个版本中都可以使用。 data 属性是一种添加自定义 dta 的方法,可以通过 jQuery 作为示例轻松读取,请参阅此处了解更多信息:link
  • @1337Atreyu 我编辑脚本添加函数ready 并让我知道现在是否工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 2012-03-13
  • 2023-03-03
  • 2012-04-18
  • 1970-01-01
相关资源
最近更新 更多