リボンの「リスト」タブをクリックすると「projectTaskButtonAppName」が未定義になります
質問
default.aspx ページの Web パーツに配置したプロジェクト タスク リストの SP2010 リボンの [リスト] タブをクリックすると、次の Javascript エラーが発生します。
Webページエラーの詳細
ユーザーエージェント:Mozilla/4.0 (互換性あり。MSIE 8.0;Windows NT 6.1;うわー64;トライデント/4.0;SLCC2;.NET CLR 2.0.50727;.NET CLR 3.5.30729;.NET CLR 3.0.30729;メディアセンター PC 6.0;.NET4.0C;.NET4.0E;InfoPath.3) タイムスタンプ:2011 年 7 月 5 日火曜日 20:32:33 UTC
メッセージ:「projectTaskButtonAppName」は未定義です 行:1302 文字:9コード:0 URI:
http://sptest/_layouts/sp.ribbon.debug.js?rev=lc6eCMZP6gL5LnuSYh0S6Q%3D%3D
かなり広範囲に検索しましたが、他に苦情は見つかりませんでした。
何を確認できるか知っている人はいますか?私のマシンには MS Project がありませんが、それによって JS が壊れることはありません。
解決 4
壊れていたJSにトライキャッチを追加することで、問題を解決しました。次の変更をSP.Ribbon.Debug.jsに変更しました:1302行目 -
try{
return !eval($v_0.HiddenScript);
}
catch(e){
return true;
}
これで、リボンボタンは少なくとも使用可能です。 sp.ribbon.jsで同じ変更を加える必要があると思います。
おそらくこれは、私の箱にMSプロジェクトをインストールしていないためです。
とにかく、これが他の貧しい魂にも役立つことを願っています。
他のヒント
リボンアイコンはグレーアウトされていますが、それでもアクティブ/使用可能です。他の場所をクリックすると、彼らは色で生き返る傾向があります。回避策があるSPバグ/スクリプトエラーのようです。
プロジェクトタスクリストと同じ問題がありました。この問題を取り除くために、プロジェクトタスクリストのさまざまなWebパーツ設定をテストしました。私のために機能したオプションは、ツールバータイプをフルツールバーに設定することでした。
リスト ビュー Web パーツのツールバー プロパティを「ツールバーなし」に設定して、リスト/ライブラリ ビューの「新しいリンク」を非表示にしようとしましたが、このエラーが発生しました。その後、以下に示すさまざまなアプローチを見つけました。
その前に、必要な Web パーツのツールバー プロパティを「概要ツールバー」に戻してください。
アプローチ 1 (単純)
サイトで使用した共通の js ファイル (または、新しい JS ファイルを作成し、アセット ライブラリにアップロードし、サイトのマスター ページで参照を提供します) に、以下のコードを追加します。これにより、空の div が作成され、ページに追加されます。それは動作します!
<script type="text/javascript" language="javascript">
var elemDivTaskButton = document.createElement('div');
document.body.appendChild(elemDivTaskButton);
var projectTaskButtonAppName = (typeof projectTaskButtonAppName === 'undefined') ? elemDivTaskButton : projectTaskButtonAppName;
</script>
アプローチ 2
- 以下のコードを備えたHTMLファイルを作成し、SitEassetsライブラリにアップロードします。
- リストの「AllItems.aspx」ページ (またはリスト ビューが追加された必須ページ) を編集し、コンテンツ エディター Web パーツ (CEWP) を追加します。
- コンテンツ エディター Web パーツを編集し、[コンテンツ リンク] プロパティ (Web パーツのプロパティ パネル上) で上記の HTML ファイルの URL を指定します。「OK」をクリックします。
上部リボンの「ページ」タブで「編集の停止」をクリックします。今すぐページを確認してください。JS エラーはなくなるはずです。
//Invoke HideNewItemLinkAndActviateWP Method after PageLoad. _spBodyOnLoadFunctionNames.push("HideNewItemLinkAndActviateWP"); function HideNewItemLink() { try { HideNewItemLink('Hero-WPQ2'); SetWebPartActive('MSOZoneCell_WebPartWPQ2'); } catch(err) { //Handle errors here } } function HideNewItemLink(tblId) { try { var tblNewItemLink = null; tblNewItemLink = document.getElementById(tblId); if(tblNewItemLink != null) { tblNewItemLink.style.display='none'; } } catch(err) { //Handle errors here } } function SetWebPartActive(wpId) { setTimeout(function() { var webPart = document.getElementById(wpId); if(webPart != null) { var dummyEvent = new Array(); dummyEvent["target"] = webPart; dummyEvent["srcElement"] = webPart; WpClick(dummyEvent); } }, 200) }
XSLTLISTVIEWWEBPARTでToolbar.Typeを「標準」から「なし」に変更すると、この問題が発生することに気付きました
コンテンツエディターWebパートを追加して、最初のアプローチで指定されたコードを追加してください -
<script type="text/javascript" language="javascript">
var elemDivTaskButton = document.createElement('div');
document.body.appendChild(elemDivTaskButton);
var projectTaskButtonAppName = (typeof projectTaskButtonAppName === 'undefined') ? elemDivTaskButton : projectTaskButtonAppName;
</script>