Создание кнопки твита без открытия нового окна - PullRequest
5 голосов
/ 13 декабря 2010

Я хочу добавить кнопку «твитнуть» на сайт.Достаточно просто, верно?Подвох в том, что сайт предназначен для работы на встроенной платформе, которая не обрабатывает всплывающие окна, поэтому я стараюсь делать все внутри страницы.

Я могу успешно создать кнопку твита, прикрепить к ней обработчик onClick и создать надлежащий URL-адрес twitter.com/share для соответствующего содержимого.Все работает нормально, когда я открываю этот URL в новом окне с помощью window.open.Однако, если я пытаюсь открыть URL-адрес в iframe, внутри фрейма ничего не загружается.Даже загрузка http://twitter.com в iframe завершается таким же образом.Тем не менее, загрузка Google или любого другого веб-сайта работает нормально.

Есть мысли о том, что мне здесь не хватает?Спасибо!--zach

Edit: Да, они обнаруживают iframe при загрузке и закрывают страницу:

if (window.top !== window.self) {
    document.write = "";
    window.top.location = window.self.location; 
    setTimeout(function(){ document.body.innerHTML='';},1);
    window.self.onload=function(evt){document.body.innerHTML='';};

}

Любым разумным способомчтобы обойти это, или я застрял писать свой собственный конвейер аутентификации через oauth?Мне ничего не нужно от их API, просто позволяя пользователям твиттить свои аккаунты.

Ответы [ 5 ]

10 голосов
/ 13 декабря 2010

Twitter (например, переполнение стека), вероятно, использует некоторый Javascript, чтобы гарантировать, что они не представлены в iFrame:

if(top!=self){
     //hates you
}

Недавно я столкнулся с чем-то похожим и закончил заново часть моего приложения без элемента iFrame.

2 голосов
/ 13 декабря 2010

Иди и получи счет твиттера developper, и все станет проще для тебя:)

1 голос
/ 13 декабря 2010

Можете ли вы просто перенаправить URL ресурса Twitter?Я предполагаю, что они хотят быть осторожными с открытием окна в iframe, чтобы предотвратить размещение твитов вредоносных сайтов в учетной записи пользователя, не давая пользователю возможности сначала подтвердить свое намерение отправить этот твит.

0 голосов
/ 05 августа 2012

@ yuval К сожалению для вас, URL твиттера переходит на страницу с заголовком X-FRAME-OPTIONS: SAMEORIGIN, установленным в ответе. Это не проверка Javascript. Браузер просто откажется отображать страницу после просмотра заголовка. Это сделано для предотвращения атаки clickjacking , обычно для кражи пароля пользователя.

Таким образом, ваш единственный вариант - перенаправить текущую страницу с помощью window.location.href=url.

0 голосов
/ 29 июля 2012

Вы сказали, что window.open отлично работал для отображения URL в новом окне, но вы пытались вставить его в родительский фрейм?

twtWindow=window.open([url],'_parent',[specs])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...