1

Facebookポップアップウィンドウが開いたら、メールとパスワードを入力した後; ポップアップ ウィンドウは閉じません。ログインが成功した後に読み込まれるはずのページが、ポップアップ ウィンドウ自体に読み込まれます。このポップアップウィンドウを手動で閉じて親ページを更新すると、すべてうまくいきます。

javascript で windows.close および window.opener.location.reload 関数を使用しましたが、機能していないようです

私はコードイグナイターを使用しています:

私のコントローラー

    <?php
class Landing extends CI_Controller {
    private $user = null;
    public function __construct()
    {
        parent:: __construct();
        parse_str($_SERVER['QUERY_STRING'], $_REQUEST);     
        //print_r($this->session->all_userdata());
        $redirect_url = (isset($_GET['redirect_url'])) ? $_GET['redirect_url'] : '';
        if($this->session->userdata('loginStatus')) {
            if($redirect_url && $redirect_url !=='') {
                redirect($_GET['redirect_url']);
            } else {
                redirect('home');
            }
        }


        $this->load->library('fb_api/facebook', array("appId" => $this->config->item('appId') , "secret" => $this->config->item('secret')));
        $this->user = $this->facebook->getUser();

    }

    public function index(){
        if (isset($_REQUEST['state']) && isset($_REQUEST['code'])) {
                echo "<script>window.close();window.opener.location.reload();</script>";
            } else {
                // load page
            }

        if ($this->user) {
          try {

見る:

<script type="text/javascript">
    var baseUrlJs = '<?php echo base_url()?>';
    var sessMemLayer = "<?=$this->session->userdata('loginStatus')?>";
    <?php if ($loginFbUrl) { ?>
    var newwindow;
    var intId;
    function loginFB(){
        var  screenX    = typeof window.screenX != 'undefined' ? window.screenX : window.screenLeft,
             screenY    = typeof window.screenY != 'undefined' ? window.screenY : window.screenTop,
             outerWidth = typeof window.outerWidth != 'undefined' ? window.outerWidth : document.body.clientWidth,
             outerHeight = typeof window.outerHeight != 'undefined' ? window.outerHeight : (document.body.clientHeight - 22),
             width    = 500,
             height   = 270,
             left     = parseInt(screenX + ((outerWidth - width) / 2), 10),
             top      = parseInt(screenY + ((outerHeight - height) / 2.5), 10),
             features = (
                'width=' + width +
                ',height=' + height +
                ',left=' + left +
                ',top=' + top
              );

        newwindow=window.open('<?=$loginFbUrl?>','Login_by_facebook',features);

       if (window.focus) {newwindow.focus()}
      return false;

    }

    <?php } ?>

</script>

助けてくださいありがとう

4

1 に答える 1

0

解決策を見つけました:

    <?php
<script>
window.opener.location.reload();
window.close();
</script>

return $this->renderText('<script>opener.location = "' . $url . '";window.close();     </script>'); 
?>
于 2013-09-19T14:09:18.893 に答える