A
既存の div 内にタグを動的に作成し、それを「クリック」して jQuery 関数を呼び出すJavaScript があります。これは、Safari を除くすべてのブラウザーで意図したとおりに機能します。
Safari は次のエラーを返します。
'undefined' は関数ではありません ('$('.shell a')[0].click()' を評価します)
私が間違っていること、またはこれがSafariで機能しない理由、およびそれを機能させる方法(またはすべてのブラウザーで機能するコードの一部)についてのアイデア.trigger("click")
も使用してみましたが、同じエラーが発生します.
JavaScript
function writeAndClickLink(url) {
$('.shell').html('<a href="' + url + '"></a>');
$('.shell a')[0].click();
}
そしてHTMLで:
<div class="shell"></div>
私がこの奇妙な方法でやっている理由は、関数が Flash サイトから呼び出されて、ツイートの報酬を与える Twitter ウィンドウを開くためです。これまでのところ、「つぶやき」イベントをウィンドウにバインドする唯一の方法でした。ウィンドウを別の方法 (window.open など) で開くと、実際にツイートを完了したことを知らせるバインドされたイベントがキャプチャされません。
流れは次のようなものです。
- ユーザーがフラッシュでつぶやきボタンをクリック
- Flash は javascript 関数を呼び出して動的に href を書き込み、それを「クリック」します。
- ツイッターウィンドウが開きます
- ユーザーがツイートに成功しました
- ツイートイベントがキャプチャされ、フラッシュが正常に更新されます
- コンテンツはフラッシュでロック解除されます