페이지 JavaScript를 처리하기 전에 Ajax-Y 링크를 비활성화하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/535141

문제

의사 Ajax Lightbox-esque 효과를 사용하여 내 웹 사이트의 쇼핑 카트를 구현하고 있습니다. (실제로 요청간에 서버를 호출하지 않습니다. 모든 것이 표시된 값을 업데이트하기위한 프로토 타입 마법 일뿐입니다.)

JavaScript가없는 사용자를위한 반 간식 폴백 동작도 있습니다. 카트를 클릭하면 (오프 사이트, 덜 간호가없는) 카트로 가져갑니다.

그러나 페이지를로드 한 다음 즉시 히트를 넣은 JavaScript가있는 사용자가 카트에 추가로 페이지에서 멀어지게됩니다. JavaScript가 잠시 동안 지연된 다음 준비가되면 Show Cart 동작을 실행하고 싶습니다. 대안으로, JavaScript가 준비되기 전에 클릭을 완전히 무시하는 것만으로도 실행 가능할 것입니다.

제안이 있습니까?

도움이 되었습니까?

해결책

나는 이제 jquery b/c로 이것을한다. 나는 jQuery가 처리하는 브라우저 차이를 막연하게 상기시킨다.

노력하다

$ (document) .ready (function () {// 모든 jQuery goodness를 여기에 넣습니다.});

다른 팁

코드가 실제로 문제가되는 것이 정말 느립니다. 나는 아무도 페이지를로드 직후에 당신의 제품을 구매하지 않을 것이라고 확신 할 것입니다. 합리적인 경우, 사용자는 특히 구매와 같은 것을 위해 상호 작용하기 전에 페이지가로드 될 때까지 기다립니다.

그러나 원래 질문에 답하기 위해 정상 코드로 링크를 비활성화 한 다음 document.observe("dom:loaded", function() { ... }) 전화.

CSS에 링크를 숨기고 페이지가로드 될 때 표시 할 수 있습니다.

<script type="text/javascript">
  document.write('<link rel="stylesheet" type="text/css" href="someCssThatHidesLinks.css" />');

  window.onLoad = function() {
    //show links
  }

</script>

이런 식으로 사용자에게 JavaScript가 없으면 링크가 여전히 활성화되어 있습니다. 그렇지 않으면 링크가로드 및 활성화 될 때까지 링크가 숨겨져 있습니다. 전에는 한 번도 해본 적이 없지만 안전한 페이지의 기능을 유지하려면 이것이 효과가 있다고 생각합니다.

그러나 페이지를로드 한 다음 즉시 히트를 넣은 JavaScript가있는 사용자가 카트에 추가로 페이지에서 멀어지게됩니다.

언제 스크립트를 시작 하시겠습니까? 문서 onload를 사용하는 경우 초기화 전에 모든 이미지가 다운로드되기를 기다릴 것입니다. 따라서 사용자는 클릭 할 수있는 기회를 제공합니다.

DOM이 준비되었을 때 JS 향상을 트리거하는 경우u003Cscript> at the bottom of the page, or by using a DOMContentLoaded-style event supplied by your framework, the links should adapt fast enough that the user is very unlikely to be clicking the button first.

실제로, 먼저 구문 분석되는 요소 사이에 배치 된 클릭을 지연시키고 문서를로드하려면 다음과 같은 내용을 쓸 수 있습니다.

<script>
    function methodcall(obj, name) {
        return function() {
            obj[name].call(obj);
        };
    }
</script>
...
<a href="nonjsversion" onclick="setTimeout(methodcall(this, 'click'), 500); return false;">Buy</a>
...

링크의 실제 클릭 핸들러가 설치 될 때까지 폴링 (즉, 메모리 누출)이 회전 할 수 있도록합니다. 그래도 꽤 못 생겼으며, 스크립트가 어떤 이유로 끊어지면 (그리고 JavaScript이므로, 어떤 시점에서 일부 브라우저에서는 버튼이 나올 가능성이 높습니다. 이 문제는 이전에 장애가있는 작업을 가능하게하는 나중에 실행되는 JavaScript에 의존하는 모든 잠재적 솔루션에 적용됩니다.

구매 버튼이 깨진 버튼보다 사업에 더 나쁜 것은 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top