Google пользовательский поиск (или альтернатива) в XHML - PullRequest
2 голосов
/ 22 апреля 2010

Google JavaScript API использует функцию document.write, поэтому не может использоваться в XHTML.

Знаете ли вы, как заставить пользовательский поиск работать в XHTML? Или есть рабочая альтернатива?

1 Ответ

2 голосов
/ 22 апреля 2010

Вы действительно используете свой XHTML как XML (application/xhtml+xml)?Если нет, вам пока не о чем беспокоиться.document.write по-прежнему будет работать в режиме text/html, хотя в целом это определенно плохая практика.

Если вы действительно используете нативный XHTML ... хорошо, я подозреваю, что у вас может возникнуть больше проблем, чем просто document.write, поскольку есть немало вещей, которые могут запутать сценарий, когда он не ожидает запуска в XHTML.Но вы можете решить эту проблему, саботируя document.write.

Самый простой способ будет выглядеть примерно так:

document.write= function(s) {
   document.getElementById('placetoputwrittenstuff').innerHTML= s;
};

, однако вам потребуется больше возиться, если он попытается написать <script> теги (поскольку их установка с помощью innerHTML не выполняет их; вам придется выбирать их с помощью getElementsByTagName и запускать каждый из них вручную) или частичные биты элементов при различных вызовах write (в этом случаевам придется собирать строки и склеивать их по окончании).

...