2014-12-08 1 views
0

나는 youtube 비디오 ID가 트위터를 통해 공유 할 수있는 앱을 가지고있다. 트윗을보고 사용자가 공유하고있는 것을 볼 수 있지만 경우에 따라 공유 내용이 손상되었습니다.string.replace 이상한 행동

우리는 id로 응답하는 안심 API를 사용하고 {{id}}를 대체하는 문자열 대체 메소드를 사용합니다.

http://twitter.com/intent/tweet?text=http://www.youtube.com/watch?v={{id}} Share your video to win. 

트윗이과 같이 볼 수있는 방법을 대부분의 경우

var href = $('#twitter-btn').attr('href'); 

$('#twitter-btn').attr('href', href.replace('{{id}}', response.youtube_id)); 

를 교체 ...

http://www.youtube.com/watch?v=0bxW5fd Share your video to win. 

그러나 우리가보고있는 경우에

...

http://www.youtube.com/watch?v 

정말 이상한 점은 '=' 제거되었습니다. 우리는 유효하지 않은지 확인하기 위해 모든 ID를 기록하기 때문에 나쁜 응답을 나타내는 서버를 배제했습니다.

어떻게 이런 일이 일어날 수 있는지, 또는 '#'기호가 % 23으로 인코딩 된 URL이어야한다는 사실을 알고있는 특정 ID의 휴식 시간대를 알고있는 사람이 있습니까?

공유 기능은 표준 트위터 공유를 사용하여 작동합니다. 그것이 내가이 일이 일어날 수 있는지 이해하지 못할 같은 기본적인 작업이기 때문에

<script type="text/javascript" async src="//platform.twitter.com/widgets.js"></script> 

이 정말 날 난처한 상황에 빠진있다.

모든 아이디어는 매우 높이 평가 될 것입니다.

+0

누락 된 '='위치가 있는지 알고 있습니다. 교체하기 전에 존재하는지 확인하십시오. 추가하지 않은 경우 확인하십시오. – Alivia

답변

1

replace isn't broken. href 문자열이 정말 다음

 
http://twitter.com/intent/tweet?text=http://www.youtube.com/watch?v={{id}} Share your video to win 

을 ... 포함되어있는 경우 귀하의 replaceresponse.youtube_id의 값으로 {{id}}를 대체합니다 같이.

=이 결과에 표시되지 않는다는 것을 감안할 때, 내가 볼 수있는 유일한 가능성은 다음과 같습니다
  1. href

    가 처음에 거기에 ={{id}}이 없습니다. 아마도 뭔가를 잡기 전에 속성을 수정하는 것이있을 것입니다.

  2. 당신은 replace의 결과를 직접보고 있지만, 그것에서을 유도 뭔가하고 유도 =와 값의 과정에서하지 않는

    이 제거 된 후, 아마도에만 = 원래 무언가가 유효하지 않은 것 (공백 일 수 있음)   —이 경우 response.youtube_id에 문제가있는 것입니다.

그러나 replace에 초점을 맞추지 마십시오. 문제가되지 않습니다.

+1

안녕하세요,이 문제를 해결할 수있었습니다. iOS에서만 트위터 앱 내부의 브라우저였습니다. href가 영향을 받도록하는로드에 대한 모든 URL을 인코딩 한 것 같습니다. 대신 data-href에 필요한 컨텐츠를 추가 한 다음 id를 가지고 href에 전달하여 urlEncodeComponent에 래핑했습니다. – wazzaday