ユーザーイベントによってトリガーされた場合でも、Facebookの許可ポップアップがブロックされました。なんで?
-
26-10-2019 - |
質問
これがページです: http://textbookcentral.com.au/26/university-of-new-south-wales/buy/69897/acct1501/?query=
「他の人に、Facebookの壁に教科書を購入している」とき。チェックボックスがチェックされ、フォーム入力データが有効かどうかに関係なく「この教科書を要求する」をクリックします。Facebookウォールに壁の投稿を作成し、必要に応じてログインダイアログまたは許可ダイアログを開きます。
ただし、ダイアログには、ブラウザがポップアップをブロックしたかどうかは表示されません。これをSafariとFirefoxでテストしました。
JavaScriptは、「この教科書をリクエストする」ボタンをクリックした場合にのみトリガーされますが、ポップアップはまだブロックされています。
(ソースを表示、下にスクロールすると、次の関連コードも表示されます。)
<a href="#" class="submit button" onclick="make_facebook_request_post()">Request this textbook</a></p>
</div>
</form>
</div>
<script type="text/javascript">
function make_facebook_request_post() {
if ($('#id_facebook').is(':checked')) {
facebook.do_post(function(success) {},
'I am using http://textbookcentral.com.au to buy a textbook for ACCT1501.', 'publish_stream')
}
}
</script>
facebook.do_post関数は、fb.api呼び出しを行います。見る http://textbookcentral.com.au/site_media/static/central/js/facebook.js
解決
うん、彼らはドキュメントでこれを指定します。
http://developers.facebook.com/docs/reference/javascript/fb.login/
FB.Loginを呼び出すと、JS SDKがポップアップウィンドウを開こうとします。そのため、この方法はユーザークリックイベントの後にのみ呼び出される必要があります。そうしないと、ほとんどのブラウザーによってポップアップウィンドウがブロックされます。