0

this gist을 사용하면 사이트가 홈 스크린 웹 앱으로 저장 될 때 링크가 브라우저를 시작하지 못하게합니다.스크립트가 두 번째 서버 호출 링크를 야기 함

스크립트가 어느 정도 작동합니다. 문제는 어떤 이유로 타겟 페이지를 두 번 호출한다는 것입니다. 이로 인해 Jquery Mobile은 페이지를 성공적으로로드 했음에도 불구하고 모든 페이지로드시에 error loading page을 표시합니다.

다음
<a href="/bookings/3/features" data-ajax="false">Link Example</a> 

서버의 로그입니다 : 여기

는 예를 들어 링크입니다

Started GET "/bookings/3/features" for 10.104.4.210 at 2012-03-02 17:13:25 +0000 
Processing by FeaturesController#index as HTML 
    Parameters: {"booking_id"=>"3"} 
    Booking Load (0.3ms) SELECT `bookings`.* FROM `bookings` WHERE `bookings`.`id` = 3 LIMIT 1 
    Car Load (0.2ms) SELECT `cars`.* FROM `cars` WHERE `cars`.`id` = 2 LIMIT 1 
    CarModel Load (0.2ms) SELECT `car_models`.* FROM `car_models` WHERE `car_models`.`id` = 1 LIMIT 1 
    Manufacturer Load (0.2ms) SELECT `manufacturers`.* FROM `manufacturers` WHERE `manufacturers`.`id` = 1 LIMIT 1 
    Feature Load (0.3ms) SELECT `features`.* FROM `features` WHERE `features`.`car_model_id` = 1 
    (0.2ms) SELECT COUNT(*) FROM `car_colours` WHERE `car_colours`.`car_model_id` = 1 
    Rendered features/index.html.erb within layouts/frontEnd (5.2ms) 
    Rendered shared/_footer.html.erb (1.1ms) 
Completed 200 OK in 62ms (Views: 56.8ms | ActiveRecord: 1.4ms) 


Started GET "/bookings/3/features" for 10.104.4.210 at 2012-03-02 17:13:25 +0000 
Processing by FeaturesController#index as HTML 
    Parameters: {"booking_id"=>"3"} 
    Booking Load (0.4ms) SELECT `bookings`.* FROM `bookings` WHERE `bookings`.`id` = 3 LIMIT 1 
    Car Load (0.2ms) SELECT `cars`.* FROM `cars` WHERE `cars`.`id` = 2 LIMIT 1 
    CarModel Load (0.2ms) SELECT `car_models`.* FROM `car_models` WHERE `car_models`.`id` = 1 LIMIT 1 
    Manufacturer Load (0.2ms) SELECT `manufacturers`.* FROM `manufacturers` WHERE `manufacturers`.`id` = 1 LIMIT 1 
    Feature Load (0.3ms) SELECT `features`.* FROM `features` WHERE `features`.`car_model_id` = 1 
    (0.2ms) SELECT COUNT(*) FROM `car_colours` WHERE `car_colours`.`car_model_id` = 1 
    Rendered features/index.html.erb within layouts/frontEnd (4.5ms) 
    Rendered shared/_footer.html.erb (1.1ms) 
Completed 200 OK in 26ms (Views: 20.8ms | ActiveRecord: 1.3ms) 

답변

2

jQuery Mobile은 일반 페이지로드 대신 ajax를 수행하여 페이지로드를 최적화하고 요청을 최소화하려고합니다. 이로 인해 jQuery 모바일이 첫 번째 요청을하게되고 jQuery가 "stay_standalone"스크립트가 정상적인 http 페이지로드에서 페이지를로드하고로드하는 리턴을 기다리는 동안이 요청이 발생합니다.

이 두 링크에서이 함수와 관련된 jQuery Mobile 코드를 볼 수 있습니다 : first in the init, checking for ajax flag and finally making a request. 이 또한 in jQuery Mobile's global config docs입니다.

jQuery Mobile을 독립 실행 형 모드로 약간 검색했지만 구체적인 내용을 찾지 못했습니다. 이 문제를 해결하기위한 2 가지 해결책이 있습니다.

  1. 사이트/webapp에서 요지를 제거하십시오. jQuery Mobile이 이미 아약스를 지원하고 있으므로 Safari에서 링크가 열리지 않기 때문에 충분한 해결책이 될 수 있습니다. 또한 요청이 줄어들어 잠재적으로 더 빠릅니다. 이 예상대로 작동하지 않는 경우 자신의 문서에 설명처럼
  2. , 당신은 jQuery를 모바일에서 ajaxEnabled 기능을 해제 할 수 있습니다 :

    $ (문서) .bind ("mobileinit", 기능() { 는 ajaxEnabled : 거짓 }});

두 번째 옵션은 최적은 아니지만 jQuery Mobile이 Mobile Safari에서 페이지를로드하지 못하도록 방지 할 때까지는 좋은 해결책이 될 수 있습니다.

+0

작업 할 스크립트가 필요한 링크가 하나 있습니다. 내가하지 않으면 저주를 당한다. 그렇지 않으면 저주를 받는다. –

0

하지 않음이 전적으로 있는지,하지만 당신은 스크립트가 false를 돌려 확인해야한다?

관련 문제