2012-11-23 6 views
0

지금 저는 아늑한 아약스 포트폴리오를 코딩하려고합니다. 내 목표는 자바 스크립트 효과를 사용자에게 제공하고 일반 HTML을 js없이 봇/사용자에게 제공하는 것입니다.봇 친숙한 아약스 페이지

파일 :

  • 의 index.php (내 프로그램의 시작 지점)
  • aboutme.php는 ("나에 대해"에 대한 HTML 코드를 포함)
  • contact.php는 ("에 대한 html 코드를 포함 > 로딩 애니메이션이 나타납니다 - "내 정보"에

    사용자의 index.php 방문 및 클릭

아이디어) "연락 s -> aboutme.php는 ajax로로드됩니다 -> history.pushstate는 URL을 aboutme.php로 다시 씁니다.

-> 사용자가 fb/twitter/g +에서 현재 웹 사이트 URL을 공유하면 봇은 올바른 제목, 본문 등을 얻습니다. 자바 스크립트가없는 일반 HTML 페이지이기 때문입니다.

내 문제는 : 다른 사용자가 해당 페이지를 열면 직접 콘텐츠를 볼 수 있습니다. 그러나 데이터에 아약스가로드 될 때까지로드 애니메이션을 먼저 표시하고 싶습니다 (링크를 클릭 할 때와 유사).

어떻게 이러한 접근 방식을 얻을 수 있습니까? 고마워요!

+0

나는이 일을 해냈습니다. 기대했던 것보다 토끼가 더 많습니다. 그리고 몇 년 후 나는 여전히 그것을지지하고 "나는 결코 그 방향으로 나아 가지 않았 으면 좋겠어."라고 생각합니다. FWIW – Madbreaks

+0

그럼, 지금 어떻게 하시겠습니까? – clonaech

답변

0

가장 좋은 방법은 자바 스크립트 파일을 만드는 것입니다. "머리"부분에 링크 태그를 작성하십시오. 이렇게하면 내용 앞에 자바 스크립트 파일이 다운로드됩니다. Javascript는 애니메이션을 보여 주지만 동시에 브라우저는 백그라운드에서 이미 콘텐츠를 다운로드합니다. "문서 준비"이벤트에서 애니메이션을 중지하십시오.

이렇게하면 봇이 직접 콘텐츠에 액세스 할 수 있습니다. 때문에 자바 스크립트 그들을 위해 작동하지 않습니다.

+0

간단한 예를 들어 주시겠습니까? 나는 따라갈 수 없었다. – clonaech

+0

좋아, 나는 당신이 성취하려고하는 것을 본다. 그러나 좀 더 복잡하게 만들자 : aboutme.php에 html 코드 만 포함되어 있지는 않지만 서버 측 PHP 요소 (예 : sleep (10);)가있는 경우는 어떨까요?브라우저는 애니메이션을 보여주기 전에 aboutme.php를 완전히받을 때까지 기다릴 것입니다. 그렇지 않습니까? – clonaech

+0

글쎄, 서버가 10 초 동안 대기하면 봇은 10 초 동안 데이터를 볼 수 없습니다. 그러나 당신이 할 수있는 일은, 당신은 몸 앞에서 머리 부분을 내뿜을 수 있습니다. 그래서 자바 스크립트가 작동하지만 서버 자체를 기다리고있을 것입니다. – tcak

-1

나는 전혀 문제가되지 않는다고 생각합니다. 평소대로 링크의 href를 유지 한 다음 JavaScript 또는 jQuery를 사용하여 링크를 클릭하면 링크 된 내용을 ajax로로드하는 기본 동작을 변경합니다.

0

난 항상이 그 가치 (일반적으로)보다 더 많은 노력 생각했지만, 귀하의 질문에 대답 : aboutme.php

의 index.php를, contect.php는 전체 HTML을 제공해야합니다. 특정 링크는 js 이벤트 핸들러가 클릭을 가로 채고 aboutme.php을로드하는 대신 백그라운드에서 aboutme-content-only.php을로드합니다. 그런 다음 dom 및 푸시 상태 등을 업데이트하십시오.

이렇게하면 처음 방문자 인 사용자는 물론 브라우저가 푸시 상태 또는 자바 스크립트를 지원하지 않는 사용자도 사이트가 쉽게 손상 될 수 있습니다.