2

我正在尝试在 Sharepoint 2010 中做一些应该非常简单的事情,创建一个更改页面的按钮(当它发生时变为“创建新项目”表单)。

我设置了一个内容编辑器 Webpart 并在其中放置了一个按钮(不是在表单中,因为在 Sharepoint 中整个页面都是一个表单),并带有一个更改 windows.location.href 的“onclick”处理程序。

在 2010 年,当您尝试输入重要的 HTML 时,CEWP 会与您发生争执,它会不断转义诸如“&”之类的字符,这可能会很痛苦。但是最后我输入了正确的内容。

它不起作用(页面只是在不更改 URL 的情况下自行刷新)。通过检查 StackOverflow,我发现了一些关于 CEWP 内容更健壮形式的建议,最终结果为 -

<script type="text/javascript">
    function submit_rec(){
       window.location.href = "<my server root URL>/Lists/Rec/NewForm.aspx";
       return;
    }
    </script>
<button onclick="javascript:return submit_rec();return false"/>Submit a Recommendation</button>

这是奇怪的部分。

如果我使用 Firebug 并在 submit_rec() 函数中放置一个断点,这可以正常工作。但是没有断点,它又回到了总是返回当前页面的行为。

似乎有时间问题,或者在我的 URL 开始加载后 Sharepoint 正在控制,并再次重新加载原始页面!

有人以前见过这个并找到了解决方案吗?

想法和建议将不胜感激。

问候: colin_e

4

2 回答 2

0

感谢大家的回应。通过更多的实验,并遵循 Stackoverflow 上其他线程的提示,我终于能够让它工作。

我上次使用 Sharepoint 内置OpenNewFormUrl()函数的错误是期望这将是 SP 在中央库中定义的全局函数。事实证明不是,它必须在使用它的每个页面上单独定义,部分原因是它硬编码了库编辑表单的弹出框的大小。

(是的,这很丑陋,就像很多 Sharepoint 一样,反正我跑题了……)

我能够使用内容编辑器 WebPart 中的以下代码,使用与标准 SP 文档中心“提交文档”按钮样式相同的按钮来使用 Sharepoint 2010 样式的“弹出”编辑器。我不知道该脚本的详细作用,我只是从文档中心站点模板主页复制它-

<script type="text/javascript">

// <![CDATA[
function ULS18u(){var o=new Object;o.ULSTeamName="DLC Server";o.ULSFileName="default.aspx";return o;}
var navBarHelpOverrideKey = "wssmain";
// ]]>

function OpenNewFormUrl(url)
{ULS18u:;
var options = {width:640, height:720};
SP.UI.ModalDialog.commonModalDialogOpen(url, options, null, null);
}

</script>

<div class="ms-uploadbtnlink">
 <button onclick="javascript:OpenNewFormUrl(&#39;/dev/KfD/KfDdev/Lists/Recommendation/NewForm.aspx&#39;);return false;" type="submit"><nobr><img alt="Submit a Recommendation" src="/_layouts/Images/uploaddoc.png"/>&#160;<span>Submit a Recommendation</span></nobr>
 </button>
</div>

如果(比如说)用户屏幕小于硬编码的弹出窗口大小,我很担心这会做什么,而且我仍然对为什么我之前(而且更简单)的努力失败感到困惑,但至少我有一个可行的解决方案。

于 2012-11-11T12:48:08.893 回答
0

尝试这个:

javascript:SP.UI.ModalDialog.OpenPopUpPage('/dev/KfD/KfDdev/Lists/Recommendation/New‌​Form.aspx');return false;

在 onclick 事件中

于 2013-02-15T08:16:45.937 回答