#javascript #bookmarklet #google-docs
#javascript #букмарклет #google-docs
Вопрос:
Я обнаружил, что если вы попытаетесь изменить редактор Google Docs Word, добавив пользовательские скрипты, это вызовет ошибку в тот момент, когда текст переносится на новую строку или если вы нажмете enter.
Проблему можно повторить, включив любой скрипт или css в dom (пример ниже). Я пробовал это в Firefox 3.6 и Safari. Ошибка возникает, даже если файл js пуст.
Это серьезно затрудняет добавление букмарклетов в Google docs у кого-нибудь есть идеи, как этого избежать? … или это только у меня?
javascript:d=document,e=d.createElement('script');e.src='http://www.domain.org/dummy.js';void(d.body.appendChild(e));
Ответ №1:
Я не смог воспроизвести проблему, как указано — внедрение скриптов работает для меня. Интересно, заботится ли Google Docs о DOM до такой степени, что неожиданные дополнительные элементы DOM каким-то образом портят его?
Одной из идей было бы добавить скрипт / стиль к <head>
, а не к телу документа, вот так:
javascript:(function(d,s){s=d.createElement('script');s.src='http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js';d.getElementsByTagName('head')[0].appendChild(s);})(document)
Надеюсь, это поможет!
Комментарии:
1. Спасибо jimbojw, я пробовал это. Я также обнаружил, что после загрузки скриптов вы можете фактически удалить их из заголовков, и код продолжит функционировать. Я надеялся, что смогу добавить их и удалить, если будут отслеживаться изменения DOM. Хотя кубиков нет.
Ответ №2:
В Google Docs уменьшен скрипт, что означает, что ваш набор переменных используется также при запуске Google docs, что означает, что Google docs пытается выполнить, в то время как переменные перепутаны. Используйте более длинные имена переменных, чтобы переменные не перекрывались (используйте слова для переменных).
Я понимаю, что это может быть на 12 лет позже.