我有一个显示用户推文的AS3应用程序。我正在尝试使用twitter intents链接来执行弹出窗口,例如https://twitter.com/intent/retweet?tweet_id=93035636432437248。
当你有一个简单的href =“link”时,它将使用嵌入的http://platform.twitter.com/widgets.js来正确格式化一个漂亮的弹出窗口。
在flash中我只能以自己或空白打开,并且不会像点击html href链接时那样触发JavaScript。
我也尝试使用ExternalInterface调用js方法来使用document.location或window.open并且都没有使用twitter js。
从Flash按钮利用Twitter JavaScript的最佳方法是什么,以便我们获得漂亮干净的弹出窗口?
答案 0 :(得分:2)
查看页面底部附近的Twitter Web Intents API Documentation,您可以找到指向未经模糊处理的源代码的链接,该代码显示其API如何自动处理链接。
简单地说,他们将点击事件处理程序附加到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");