2016-09-24 16 views
0

この変数をある関数から別の関数に渡す必要がありますが、これにはいくつか問題があります。1つの関数から別の関数にローカル変数を渡す方法

var url; 
var ua = navigator.userAgent.toLowerCase(); 
$("#ToBuyStep2").click(function(){ 

    if(ua.match(/MicroMessenger/i)=="micromessenger") { 
     url=window.location.href; 
     window.location.href = "http://www.juliyeah.com/wap/tmpl/order/weixin.html"; 
    } 
}) 

function goBackUrl(){ 

    if(ua.match(/MicroMessenger/i)!="micromessenger") { 

     window.location.href = "http://www.juliyeah.com"; 
    } 
} 

は、だから私はToBuyStep2がクリックされたときに、このURLを覚えていて、goBackUrl()関数にこのURLを渡す必要があります。これらの2つの関数は異なるファイルで呼び出されるため、それらを結合することはできません。 誰でもこれを行う方法を知っていますか?

答えて

0

「最後のURL」を設定するためにsessionStorageを使用し、次にboGackUrl関数内でそれをリクエストすることができます:sessionStorage.setItem('prevUrl', window.location.href)。場所を変更すると、データが失われることに注意してください。しかし、セッションストレージにデータを渡すと、ユーザーがタブ/ブラウザを閉じるまで利用可能になります。

+0

なぜ私がこれを行う必要がある理由は、ユーザがwechatのブラウザで自分のウェブサイトを閲覧するときに、ユーザーがpaypalプラグインを見ることができないようにすることです。だから彼らがサファリに移動するとき、セッションは私が考えるのと同じではないでしょう。 – Yao

+0

あなたは私を冗談にしています...あるブラウザから別のブラウザに詳細を渡したいですか?そうだとすれば、Webの仕組みについてもっと学ぶ必要があるかもしれません。 – n1kkou

1
const functionGenerator = function() { 
    let url = ''; 

    let result = {}; 

    result.ToBuyStep2 = function() { 
     // you can access URL here 
    }; 

    result.OnClick = function() { 
     // you can access URL here 
    }; 

    return result; 
}; 

let temp = functionGenerator(); 

document.getElementById('whatever').onclick = temp.OnClick; 
document.getElementById('stuff').someEvent = temp.ToBuyStep2; 
+0

はい、このクロージャは、この仕事に役立ちます。 – Redu

+0

@Reduはい、クロージャが最適です – RotatingPieces