使用SP2010中的按钮更改页面,行为异常

时间:2012-11-09 17:45:28

标签: javascript sharepoint sharepoint-2010 onclick window.location

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

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

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

2 个答案:

答案 0 :(得分: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>

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

答案 1 :(得分:0)

试试这个:

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