2010-07-08 3 views
6

Этот вопрос заставил меня замочить в течение 2 дней. Я сделал простое расширение chrome, которое вызывает серверную программу, которая возвращает HTML, который затем я вставляю в div в всплывающем окне. Все было в порядке, за исключением простой привязки, содержащей «mailto: [email protected]» href. Окно композиции сообщений электронной почты не появится.mailto link не работает в chrome extension popup

Обход: Добавить цель = «_blank» атрибут

Я хотел бы знать, почему это необходимо.

+0

Если вы делаете хромированные расширения, посмотрите http://area51.stackexchange.com/proposals/10910/google-chrome-extensions-webstore?referrer=SDGU8262nOKdp17Pr161Vw2 – Lizard

+1

Это помогло мне, но я нашел лучшее обходное решение - использовать скрытый iframe, а не открытие нового окна/вкладки. <имя = "позиция«mailto_iframe»стиль IFrame: абсолютная, видимость: скрытый;> –

+0

@JeremyLawson Я считаю, что если у вас есть много электронной почты: ссылки на удлинительной всплывающее окно, делая IFrame трюк работает только один раз, последующие клики на том же или другом mailto: ссылки больше не работают ... –

ответ

4

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

2

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

function sendEmail(){ 
    var mail = 'mailto:[email protected]?subject=Subject&body=Body'; 
    var newWin = window.open(mail); 
    setTimeout(function(){newWin.close()}, 100); 
} 

Это не идеально, потому что он открывает новое окно, которое показывается пользователю вместо делая это мгновенно. На самом деле, моя первая попытка была эта (которая работает в HTML-файл, но не работает в моем расширения):

function sendEmail(){ 
    var mail = 'mailto:[email protected]?subject=Subject&body=Body'; 
    window.open(mail).close(); 
} 

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

Смежные вопросы