Глядя на Документацию по 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");