Sharepoint, ajax и заголовок страницы

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

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

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

Есть идеи, как это решить?


person Marian Polacek    schedule 28.11.2008    source источник


Ответы (5)


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

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

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

person user26888    schedule 01.12.2008
comment
спасибо за ваш ответ .. мы, вероятно, реализуем какое-то подобное исправление javascript, потому что для нас невозможно жестко закодировать заголовки страниц - person Marian Polacek; 01.12.2008

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

<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>
person James    schedule 19.01.2009
comment
Спасибо! Это отлично устранило мою проблему! Мне просто жаль, что у меня не было прав на мод, чтобы я мог исправить ваш стиль :) - person phairoh; 19.03.2010

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

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

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

... затем измените его так, чтобы все было в одной строке, например:

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

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

person Steve J    schedule 10.11.2010
comment
+1 - Замечательно простое решение поставившей меня в тупик проблемы. - person TZHX; 14.02.2013
comment
Это круто. 2,5 года, но я столкнулся с той же проблемой. Спасибо. - person RJ Cuthbertson; 10.05.2013

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

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

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

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

person Marian Polacek    schedule 01.12.2008
comment
Вы когда-нибудь понимали, почему это происходит только с публикациями страниц? Это кажется очень странным. - person xr280xr; 07.03.2013

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

<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> 

спасибо БОЛЬШОЕ: D

person Miss ZerOne    schedule 20.03.2010