2017-12-16 1 views
2

내 페이지에 LinkedIn 공유를 통합하고 싶습니다.LinkedIn은 JS SDK를 사용하여 어떤 유형의 마법을 사용합니까? 스크립트 본문과 src가 있고 이상한 형식의 본문이 있습니다

는 링크드 인은 여기에서 제공하는 설명서를 읽기 : https://developer.linkedin.com/docs/getting-started-js-sdk

을 ... 나는 그들이

<script type="text/javascript" src="//platform.linkedin.com/in.js"> 
    api_key: [API_KEY] 
    onLoad: [ONLOAD] 
    authorize: [AUTHORIZE] 
    lang:  [LANG_LOCALE] 
</script> 

내가하지 않습니다 내 페이지의 헤드 secion에서이 스크립트 태그를 필요로보고 놀랐 무엇 여기에서 일어나고있다. 우선 w3schools는 "" "참고": "src"속성이 있으면 요소가 비어 있어야합니다. ""(https://www.w3schools.com/tags/tag_script.asp). 나는 또한 여기에 갔다 : https://html.spec.whatwg.org/multipage/scripting.html#the-script-element (나는 이것이 얼마나 권위가 있는지 확신하지 못한다 ... 그러나 형식과 길이에 기초하여 권위있는 것처럼 보임 : P) - 또한 src 속성이 있다면 몸 은 기본적으로이어야합니다. - 어쨌든 -이 두 리소스는 LinkedIn의 스크립트 구문을 설명 할 수 없습니다.

그럼 누구나 스크립트 본문 구문을 알고 있습니까? 그 JS 라벨 있습니까? 그렇다면 어떻게 사용되는지 알지 못합니다. loop를 벗어나려면 continue/break 문과 함께 레이블을 사용한다고 생각했습니다. LinkedIn의 API가 그 구문에서 제공한다면 어떻게 정보를 얻을 수 있는지 이해할 수 없습니다. 스크립트 본문이 어떻게 든 스크립트에 공급되며 자체적으로 구문 분석합니까?

누군가가 내게 무슨 일이 일어 났는지 설명해 주시겠습니까?

감사합니다.

답변

1

당신이 말한 것은 정확합니다. src 특성이 추가되면 script의 본문이 실행되지 않습니다. 그러나이 문제를 해결할 수있는 방법이 있습니다. 스크립트 태그를 검색하여 innerHTML을 추출하고 eval을 사용합니다. 물론 준비가 완료되면 문서 작업을 수행해야합니다.

LinkedIn은 정확히 어떻게 작동하는지 모르지만 HTML 표준은 변경되지 않았으며로드 순서도 변경되지 않았으므로 설명했던 것과 비슷한 방식으로 또는 본문을 구문 분석하는 좀 더 영리한 방식을 사용합니다. 스크립트.

기타 참고 사항 : 문서 준비 이벤트를 사용하는 대신이를 라이브러리에 바인딩 할 수 있습니다. 마지막으로 사용 가능한 스크립트 태그를 검색하고 본문을 추출 할 때와 마찬가지로 라이브러리를로드 할 때 마지막 요소가로드되므로 어떤 이벤트도 사용하지 않고 코드를 검색 할 수 있어야합니다. (테스트가 필요 하겠지만, DOM 요소는 동 기적으로로드되고, 하향식 접근법).

분명히 eval을 사용하는 것은 바람직하지 않습니다. 매우 느리지 만 확실히 찾고있는 기능을 제공합니다.

추신. 형식 오류를 용서하십시오. 나는 집에서 2 킬로미터 떨어진 나의 모바일에서 이것을 타이핑하고있다. 그렇지 않으면 필자는 샘플 코드 스 니펫을 제공하고 위의 테스트를 직접 수행해도 행복 할 것입니다.

관련 문제