[英]Uncaught ReferenceError: Type is not defined in sp.runtime.js
我正在嘗試使用Office PnP中的分類法Picker示例。
我只想將一個字段綁定到一個托管元數據術語。
我得到的錯誤在這里: http : //screencast.com/t/nOaTusUH4V
我的代碼是:
<head>
<meta charset="utf-8" />
<title>Learning bootstrap</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="../Content/bootstrap.min.css" rel="stylesheet" />
<link href="../Content/bootstrap-theme.min.css" rel="stylesheet" />
<link rel="Stylesheet" type="text/css" href="../Content/taxonomypickercontrol.css" />
<script src="../Scripts/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="/_layouts/15/sp.runtime.js"></script>
<script type="text/javascript" src="/_layouts/15/sp.js"></script>
<script src="../Scripts/app.js" type="text/javascript"></script>
<script src="../Scripts/taxonomypickercontrol.js" type="text/javascript"></script>
</head>
body>
<div id="divSPChrome"></div>
<div class="container">
<div class="row">
<div class="col-md-8">
<h2>Create project site</h2>
<form class="form-horizontal" role="form">
<div class="form-group">
<label for="inputEmail3" class="col-sm-2 control-label">Project name</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="inputEmail3" placeholder="Project name">
</div>
</div>
<div class="form-group">
<label for="inputPassword3" class="col-sm-2 control-label">Domain</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="inputPassword3" placeholder="Domain">
<div class="ms-core-form-line" style="margin-bottom: 0px;">
<input type="hidden" id="taxPickerContinent" />
</div>
</div>
</div>
如你所見,我有隱藏的領域。 我的App.js文件是:
// variable used for cross site CSOM calls
var context;
// variable to hold index of intialized taxPicker controls
var taxPickerIndex = {};
//Wait for the page to load
$(document).ready(function () {
//Get the URI decoded SharePoint site url from the SPHostUrl parameter.
var spHostUrl = decodeURIComponent(getQueryStringParameter('SPHostUrl'));
var appWebUrl = decodeURIComponent(getQueryStringParameter('SPAppWebUrl'));
var spLanguage = decodeURIComponent(getQueryStringParameter('SPLanguage'));
//Build absolute path to the layouts root with the spHostUrl
var layoutsRoot = spHostUrl + '/_layouts/15/';
//load all appropriate scripts for the page to function
$.getScript(layoutsRoot + 'SP.Runtime.js',
function () {
$.getScript(layoutsRoot + 'SP.js',
function () {
//Load the SP.UI.Controls.js file to render the App Chrome
$.getScript(layoutsRoot + 'SP.UI.Controls.js', renderSPChrome);
//load scripts for cross site calls (needed to use the people picker control in an IFrame)
$.getScript(layoutsRoot + 'SP.RequestExecutor.js', function () {
context = new SP.ClientContext(appWebUrl);
var factory = new SP.ProxyWebRequestExecutorFactory(appWebUrl);
context.set_webRequestExecutorFactory(factory);
});
//load scripts for calling taxonomy APIs
$.getScript(layoutsRoot + 'init.js',
function () {
$.getScript(layoutsRoot + 'sp.taxonomy.js',
function () {
//bind the taxonomy picker to the default keywords termset
//$('#taxPickerKeywords').taxpicker({ isMulti: true, allowFillIn: true, useKeywords: true }, context);
$('#taxPickerContinent').taxpicker({ isMulti: false, allowFillIn: false, useKeywords: false, termSetId: "51f18389-f28a-4961-a903-ee535f7c620d", levelToShowTerms: 1 }, context, initializeCountryTaxPicker);
taxPickerIndex["#taxPickerContinent"] = 0;
});
});
});
});
});
function initializeCountryTaxPicker() {
//if (this._selectedTerms.length > 0) {
// $('#taxPickerCountry').taxpicker({ isMulti: false, allowFillIn: false, useKeywords: false, termSetId: "0cc96f04-d32c-41e7-995f-0401c1f4fda8", filterTermId: this._selectedTerms[0].Id, levelToShowTerms: 2, useTermSetasRootNode: false }, context, initializeRegionTaxPicker);
// taxPickerIndex["#taxPickerCountry"] = 4;
//}
}
function initializeRegionTaxPicker() {
//if (this._selectedTerms.length > 0) {
// $('#taxPickerRegion').taxpicker({ isMulti: false, allowFillIn: false, useKeywords: false, termSetId: "0cc96f04-d32c-41e7-995f-0401c1f4fda8", filterTermId: this._selectedTerms[0].Id, levelToShowTerms: 3, useTermSetasRootNode: false }, context);
// taxPickerIndex["#taxPickerRegion"] = 5;
//}
}
function getValue(propertyName) {
if (taxPickerIndex != null) {
return taxPickerIndex[propertyName];
}
};
//function to get a parameter value by a specific key
function getQueryStringParameter(urlParameterKey) {
var params = document.URL.split('?')[1].split('&');
var strParams = '';
for (var i = 0; i < params.length; i = i + 1) {
var singleParam = params[i].split('=');
if (singleParam[0] == urlParameterKey)
return singleParam[1];
}
}
function chromeLoaded() {
$('body').show();
}
//function callback to render chrome after SP.UI.Controls.js loads
function renderSPChrome() {
var icon = decodeURIComponent(getQueryStringParameter('SPHostLogoUrl'));
//Set the chrome options for launching Help, Account, and Contact pages
var options = {
'appTitle': document.title,
'appIconUrl': icon,
'onCssLoaded': 'chromeLoaded()'
};
//Load the Chrome Control in the divSPChrome element of the page
var chromeNavigation = new SP.UI.Controls.Navigation('divSPChrome', options);
chromeNavigation.setVisible(true);
}
Type
在MicrosoftAjax.js文件中定義。 您可以通過使用以下script
標記從aspnet CDN獲取它來訪問它:
<script type="text/javascript" src="//ajax.aspnetcdn.com/ajax/4.0/1/MicrosoftAjax.js"></script>
您不需要ScriptManager。
您加載SP.Runtime.js和SP.js兩次。 一旦在頭上並准備好文件。 嘗試刪除其中一個,但錯誤可能是另一個我在404之前看到更多錯誤。
你錯過了劇本管理員。 把它放在<div id="divSPChrome"></div>
<asp:ScriptManager ID="ScriptManager" runat="server" EnableCdn="True" />
當您在html頁面中工作時,只需在加載jquery后嘗試引用它。
<script src="https://ajax.aspnetcdn.com/ajax/4.0/MicrosoftAjax.js" type="text/javascript"></script>
這可能是由於您注冊腳本的順序。 引用的庫應該在使用它們的腳本之前注冊。 最簡單的方法是在瀏覽器中檢查您的頁面,您將看到它們加載的順序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.