【问题标题】:Twitter Intents Popups from Actionscript 3 application来自 Actionscript 3 应用程序的 Twitter 意图弹出窗口
【发布时间】:2011-10-19 07:54:41
【问题描述】:

我有一个显示用户推文的 AS3 应用程序。我正在尝试使用 twitter 意图链接来做弹出窗口,例如https://twitter.com/intent/retweet?tweet_id=93035636432437248

当您有一个简单的 href="link" 时,它将使用嵌入的 http://platform.twitter.com/widgets.js 来正确格式化一个漂亮的弹出窗口。

在 Flash 中,我只能以 self 或空白打开,并且不会像从 html href 链接单击时那样触发 JavaScript。

我也尝试使用 ExternalInterface 调用一个 js 方法来使用 document.location 或 window.open 并且没有使用 twitter js。

从 Flash 按钮中利用 Twitter JavaScript 以获得漂亮干净的弹出窗口的最佳方法是什么?

【问题讨论】:

    标签: javascript actionscript-3 android-intent twitter popup


    【解决方案1】:

    查看页面底部附近的Twitter Web Intents API Documentation,您可以找到指向未混淆源代码的链接,该链接显示了他们的 API 如何自动处理链接。

    简单地说,他们将 Click 事件处理程序附加到 DOM,然后检查被点击的链接是否指向他们的 Web Intents URL。当您从 ActionScript 打开一个窗口时,您绕过了 DOM,因此代码不会触发。

    现在您通常只希望使用 ExternalInterface 来调用 Web Intents API 公开的方法;然而,Twitter 的聪明人已经在匿名闭包中创建了他们的整个 API,以避免污染 DOM - 一定喜欢 javascript ;)

    因此,就我个人而言,我会通过创建自己的 Twitter Web Intents API 版本并将其包含在我的 Flash 应用程序所在的 HTML 页面中来解决这个问题;例如:

    // 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);
    
        }
    }());
    

    然后您可以通过 ExternalInterface 调用从您的 ActionScript 项目中调用它,如您之前建议的那样:

    ExternalInterface.call("TwitterAPI.retweet", "35782000644194304");
    

    【讨论】:

    • 我当然希望我不必这样做,但我认为你是对的。还通过电子邮件向 Twitter 上的联系人发送电子邮件,看看他们是否对此有任何意见。非常感谢您的帮助!
    • 我很抱歉带着问题跳到这个线程。该例程运行良好,但我无法弄清楚在推文发布后如何触发 Twitter 的回调事件。通常,以下设置回调: twttr.events.bind('retweet', function(event) { alert ('retweet posted'); });我如何利用它来使用您发布的 TwitterAPI?非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多