Всплывающие окна Twitter Intents из приложения Actionscript 3 - PullRequest
2 голосов
/ 03 августа 2011

У меня есть приложение AS3, которое показывает твиты пользователей. Я пытаюсь использовать ссылки твиттера для всплывающих окон, таких как https://twitter.com/intent/retweet?tweet_id=93035636432437248.

Если у вас есть простая ссылка href = "link", она будет использовать встроенный http://platform.twitter.com/widgets.js для правильного форматирования хорошего всплывающего окна.

Во флэш-памяти я могу открывать только сам или пусто, и ни один из них не запускает JavaScript так же, как при переходе по ссылкам html href.

Я также пытался использовать ExternalInterface для вызова метода js для использования document.location или window.open, и ни один из них не использовал twitter js.

Каков наилучший способ использовать JavaScript в Twitter с помощью кнопки флэш-памяти, чтобы мы получили красивое чистое всплывающее окно?

1 Ответ

2 голосов
/ 04 августа 2011

Глядя на Документацию по API веб-содержания Twitter , в нижней части страницы вы можете найти ссылку на неосмысленный исходный код, который показывает, как их API автоматически обрабатывает ссылки.

Проще говоря, они присоединяют обработчик события Click к DOM, который затем проверяет, указывает ли ссылка, по которой щелкают, их URL-адрес веб-содержимого. Когда вы открываете окно из ActionScript, вы обходите DOM, и поэтому код не сработает.

Теперь обычно вы ожидаете использовать ExternalInterface для вызова метода, предоставляемого API-интерфейсом Web Intents; однако умные парни в Твиттере создали свой API в анонимном закрытии, чтобы избежать загрязнения DOM - должен любить javascript;)

Итак, лично я бы решил эту проблему, создав собственную версию API веб-содержания Twitter и включив его в HTML-страницу, на которой находится мое Flash-приложение; например:

// Create a global object which we can attach methods to.
var TwitterAPI = {};

// The methods themselves are created in a closure to avoid polluting the global
// namespace with temporary variables.
(function() {
    // The base URL of the Twitter API.
    TwitterAPI.baseURL = "https://twitter.com/intent/";

    // Opens a pop-up window and prompts the user to retweet the Tweet linked to 
    // the supplied tweet_id.
    TwitterAPI.retweet = function(tweet_id) {
        var url = TwitterAPI.baseURL + "retweet?tweet_id=" + tweet_id;
        openWindow(url);
    }

    function openWindow(url) {
        var windowOptions = "scrollbars=yes,resizable=yes,toolbar=no,location=yes";
        var width = 550;
        var height = 420;

        // Center the popup window.
        var left = Math.round((screen.width / 2) - (width / 2));
        var top = 0;        
        if (screen.height > height) {
                top = Math.round((screen.height / 2) - (height / 2));
            }

        window.open(url, 'intent', windowOptions + ",width=" + width +
            ",height=" + height + ",left=" + left + ",top=" + top);

    }
}());

Затем вы можете вызвать это из вашего проекта ActionScript с помощью вызова ExternalInterface, как вы ранее предлагали:

ExternalInterface.call("TwitterAPI.retweet", "35782000644194304");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...