Sharepoint, ajax и заголовок страницы - PullRequest
3 голосов
/ 28 ноября 2008

У меня странная проблема с функциональностью sharepoint и ajax. У нас есть UpdatePanel, размещенная внутри веб-части. При частичной обратной передаче заголовок страницы пропадает.

Мы обнаружили, что временное частичное решение состоит в том, чтобы записать элемент заголовка в одну строку и не использовать внутри него пробелы или элементы управления .. даже не буквальный элемент управления.

Но нам нужен какой-то способ обеспечить заголовок sommon для всех страниц, поэтому заголовок будет выглядеть так: Заголовок по умолчанию - заголовок текущей страницы

Есть идеи, как решить эту проблему?

Ответы [ 5 ]

5 голосов
/ 19 января 2009

Я думал, что поделюсь своим решением этой надоедливой проблемы. То, что я в конечном итоге сделал, это бросил этот удобный маленький сценарий, который я собрал вместе ниже. Вы можете поместить это в свой пользовательский макет страницы или пользовательскую главную страницу. Он работает, подключив обработчик событий AJAX, чтобы захватить заголовок до того, как AJAX изменит его, а затем повторно применить его, используя приведенный выше код Дарпи. Это позволяет всегда отображать правильный заголовок страницы.

<script type="text/javascript">

// This script is to fix the issue where AJAX causes SharePoint 
// publishing pages to sometimes make the page title something 
// whacky. 
var app = Sys.Application;
var origTitle = "";
app.add_init(SPCustomAppnInit);


function SPCustomAppnInit(sender) {
  origTitle = document.title; // grab the original title.
  var prm = Sys.WebForms.PageRequestManager.getInstance();
  if (!prm.get_isInAsyncPostBack())
  {
 prm.add_pageLoaded(SPCustomPageLoaded); // wire up loaded handler.
  }
}

function SPCustomPageLoaded(sender, args) {

 document.title = origTitle; // put the original title back on the document.
}

<script>
3 голосов
/ 10 ноября 2010

Я понимаю, что на этот вопрос уже ответили, но я собираюсь добавить свои $ .02. Похоже, что проблема проявляется из-за двух условий: (1) использование асинхронной обратной передачи AJAX и (2) наличие многострочного элемента в страницы.

Проверьте свою главную страницу. Если что-то в этом роде:

<title>
<sharepointwebcontrols:listitemproperty property="Title" ...>
</title>

... затем измените все на одну строку, например:

<title><sharepointwebcontrols:listitemproperty property="Title" ...></title>

Проблема решена. Не требуется JavaScript.

3 голосов
/ 01 декабря 2008

У меня нет ссылки на сообщение группы новостей, но это известная проблема с публикацией страниц, как упоминал Дракс. Обходной путь, который я использовал в прошлом, заключается в жестком кодировании заголовка на странице - потеря заголовка метаданных является частью ошибки.

Когда жесткое кодирование было невозможно, я использовал javascript для изменения заголовка страницы: document.title = "исправление заголовка здесь";

Предположительно, Microsoft планирует исправить эту проблему в следующем выпуске sharepoint.

0 голосов
/ 21 марта 2010

Добавление следующего @ в начале моего пользовательского элемента управления webpart. Исправлена ​​проблема

<script type="text/javascript"> 

// This script is to fix the issue where AJAX causes SharePoint  
// publishing pages to sometimes make the page title something  
// whacky.  
var app = Sys.Application; 
var origTitle = ""; 
app.add_init(SPCustomAppnInit); 


function SPCustomAppnInit(sender) { 
  origTitle = document.title; // grab the original title. 
  var prm = Sys.WebForms.PageRequestManager.getInstance(); 
  if (!prm.get_isInAsyncPostBack()) 
  { 
 prm.add_pageLoaded(SPCustomPageLoaded); // wire up loaded handler. 
  } 
} 

function SPCustomPageLoaded(sender, args) { 

 document.title = origTitle; // put the original title back on the document. 
} 

</script> 

спасибо ALOT: D

0 голосов
/ 01 декабря 2008

это похоже на проблему чистого ресурса. Также похоже, что затрагиваются только сайты, основанные на макете страницы публикации.

Я отладил ответ в firebug и по какой-то причине он возвращает настройку для заголовка страницы, поэтому ответ от сервера содержит не только информацию панели обновления, но и пустой заголовок страницы.

Я отладил наши веб-части, и ни одна из них не воспроизводится с заголовком страницы. Я бы предложил не использовать публикацию или просто не использовать какие-либо элементы управления внутри заголовка.

В настоящее время мы работаем над этим вопросом в компании, в которой я работаю, поэтому я буду загружать ваши результаты, когда мы что-нибудь выясним.

...