2016-09-24 3 views
0

이 변수를 한 함수에서 다른 함수로 전달해야하지만 여기에는 몇 가지 문제가 있습니다.한 함수에서 다른 함수로 지역 변수를 전달하는 방법

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을 전달해야합니다. 이 두 함수는 서로 다른 파일에서 호출되므로 서로 결합 할 수 없습니다. 누구든지이 작업을 수행하는 방법을 알고 있습니까?

답변

0

sessionStorage를 사용하여 "마지막 URL"을 설정 한 다음 boGackUrl 함수 내에서 sessionStorage.setItem('prevUrl', window.location.href)을 요청할 수 있습니다. 위치가 변경된 후에는 데이터가 손실됩니다. 그러나 세션 저장소에 데이터를 전달하면 사용자가 탭/브라우저를 닫을 때까지 사용할 수있게됩니다. 사용자가 블록 페이팔 위챗, 위챗의 브라우저에서 내 웹 사이트를 탐색 할 때 사용자가 페이팔 플러그인을 볼 수 없습니다 있도록하기 때문에

+0

나는이 작업을 수행해야하는 이유입니다. 그래서 그들이 사파리로 옮길 때 세션은 내가 생각하는 것과 같지 않을 것입니다. – Yao

+0

농담을하고있을거야 ... 한 브라우저에서 다른 브라우저로 세부 사항을 전달하고 싶습니까? 음, 그렇다면 웹 작업에 대해 조금 더 배워야 할 수도 있습니다 ... – 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

관련 문제