Я столкнулся с той же проблемой и нашел твой вопрос, ища ответ сам.
Проблема в вашем коде, насколько я могу судить, не в том, что window.getSelection не определена в gmail, а в том, что getSelection (). ToString () возвращает строку нулевой длины, несмотря на то, что текст выделен.В Firefox решение Тима Дауна работало для меня, но не в Chrome, так как contentWindow недоступно.
Мой пересмотренный код ниже, который выполняет итерации, хотя любые фреймы на странице для меня работают в Firefox, Chrome и Safari.(Я не проверял это в других браузерах).
var selectedText = '';
if (window.getSelection) {
selectedText = window.getSelection().toString();
}
if (selectedText == '') {
var frames = window.frames;
for (var i = 0; i < frames.length; i++) {
if (selectedText == '') {
selectedText = frames[i].document.getSelection().toString();
}
else { break; }
}
}