2012-07-05 3 views
2

내가 내 페이지의 머리에 이것을 추가 :자바에서 리디렉션을 취소 하시겠습니까?

<script type="text/javascript"> 

if (screen.width <= 800) { 
    window.location = "http://m.domain.com"; 
} 

</script> 

내가 "메인 사이트"라고 내 모바일 버전에 버튼이 있습니다. 단추를 내 기본 사이트로 이동하지만 내 모바일 사이트로 다시 리디렉션하지 않습니다. 어떻게해야합니까?

또한 나는 한 번 그곳에 가기를 원합니다. 당신이로 리디렉션하기 전에 그래서, 그들은 내 웹 사이트 이름을 입력 한 다음, 난, 누군가가 "메인 사이트"버튼을 클릭하면 당신은 document.referrer

<script type="text/javascript"> 
if (screen.width <= 800 && document.referrer.indexOf('http://m.domain.com') != 0) { 
    window.location = "http://m.domain.com"; 
} 
</script> 
+0

당신은 어떤 백엔드 언어를 사용하고 있습니까 : 여기

// Pseudocode: // Sets a cookie named "view" with the value "mobile" function setMobileView() { Cookie.set("view", "mobile"); } mobileViewButton.onclick = setMobileView; // Deletes the cookie named "view" function setMainView() { Cookie.delete("view"); } mainViewButton.onclick = setMainView; 

는 리디렉션 로직이 어떻게 보이는지에 대한 의사인가? – jeff

+0

무엇을 의미합니까? –

+0

PHP와 같은 언어를 사용하고 있습니까? – jeff

답변

2

이미 메인 사이트로 이동할 버튼이있는 경우. 메인 사이트를 해당 버튼에 연결하기 만하면됩니다. 추가 작업은 url 매개 변수를 사용하여 기본 레이아웃을 확인하고 강제 적용하는 것입니다. 예 :

<a href="http://www.domain.com?forcelayout=main">Main site</a> 

주 레이아웃을 강제 실행하려면이 매개 변수를 확인하십시오. 또는 현재 사용중인 스크립트가 자동으로 수행하려는 작업을 수행합니다.


쿼리 문자열을 읽는 데 다음 함수를 사용하십시오. [Source]

function getParameterByName(name) { 
    var match = RegExp('[?&]' + name + '=([^&]*)') 
        .exec(window.location.search); 
    return match && decodeURIComponent(match[1].replace(/\+/g, ' ')); 
} 

다음은이 같은 논리에서 사용할 수 있습니다 :

if (screen.width <= 800 && getParameterByName('forceLayout') != 'main') { 
    window.location = "http://m.domain.com"; 
} 
+0

글쎄, 난 버튼 만 가지고있다.

+0

그게 전부다. 거기에 넣어두면 모바일 사용자가 메인 사이트로 이동하게된다. –

+0

아니요, 스크립트를 비트로 변경해야합니다. 'forceLayout' URI 매개 변수를 고려해야합니다. – Starx

1

에게 먹고 싶어 메인 사이트에서 "MobilOptOut"쿠키를 만든 다음 screen.width if 문에 해당 쿠키의 존재 여부를 테스트합니다.

+0

링크로 href = ""무엇을 넣을까요? –

+0

도, 나는 그들이 단지 한 번 거기에 가기를 원한다. 그래서 다음 번에 내 웹 사이트 이름을 입력 할 때 모바일 사이트로 가져 오길 원합니다 –

+0

사람이 모바일 사이트에서 온 경우 리퍼러는 'http : // m.domain.com/whatever'이므로'if (screen.width <= 800 && document.referrer.indexOf ('http://m.domain.com')! = 0)'false로 평가되고 리디렉션되지 않습니다. 메인 사이트로가는 버튼 만 원한다면 쿠키를 사용하는 것이 더 나을 것입니다. – Musa

1

을 검사 할 수는 모바일 사이트

+0

좋아요, OP가 어떻게 이런 일을 할 수 있는지 보여 주시겠습니까? – Starx

+0

@Starx "나는 한 번 (메인 사이트)에 그곳으로 가야한다"는 코멘트가 있기 때문에 매개 변수를 더 잘 사용하는 솔루션을 좋아합니다. 쿠키는 쿠키가 삭제 될 때까지 주 사이트로 항상 리디렉션되도록합니다. 내 웹 사이트는 두 기술을 모두 사용합니다. 우리는 매개 변수를 사용하지만 모바일 브라우저 용 사용자 에이전트 문자열을 확인한 후 백엔드에서 쿠키를 설정합니다. – HeatfanJohn

+0

답변에 대한 이의가 없습니다. 정말 좋은 개념입니다. OP와 미래의 방문자들에게 조금만 도움이되기를 바랍니다. 그래서, 당신이 제안하고있는 것을 보여주는 작은 예를 들어 답을 기입하십시오. – Starx

0

클라이언트는 사용자가보고 싶어 현재보기의 상태를 관리 할 필요가있다. HTTP는 상태 비 저장 프로토콜이기 때문에 쿠키를 사용하여 HTTP 요청을 통해 사용자 선택을 유지할 수 있습니다.

사용자가 버튼을 클릭하여 주 버전을 표시하면 클릭 이벤트의 일부로 쿠키를 삭제하십시오. 마찬가지로 사용자가 모바일 버전을 보려고 할 때 쿠키를 원하는 값으로 설정하십시오. 라이브러리에 종속적 일 수있는 JavaScript로 쿠키를 조작하는 여러 가지 방법이 있으므로 다음은 페이지에서 수행해야하는 의사 코드입니다.

// Pseudocode for deciding the view to display 
if (view === "mobile") { 
    location.href = "http://m.domain.com"; 
} 
관련 문제