반응형
북마크릿에서 외부 JS를로드 하시겠습니까?
북마크릿을 사용하여 외부 JavaScript 파일을로드하려면 어떻게해야합니까? 이것은 IE의 URL 길이 제한을 극복하고 일반적으로 일을 깨끗하게 유지합니다.
2015 업데이트
콘텐츠 보안 정책으로 인해 현재 많은 사이트에서이 기능이 작동하지 않습니다. 예를 들어 아래 코드는 Facebook에서 작동하지 않습니다.
2008 년 답변
외부 JS를 포함하는 스크립트 태그를 생성하는 북마크릿을 사용하십시오.
샘플로 :
javascript:(function(){document.body.appendChild(document.createElement('script')).src='** your external file URL here **';})();
파이어 폭스와 아마도 다른 것들은 여러 줄 북마크릿을 지원하며, 하나의 라이너가 필요하지 않습니다. 코드를 붙여 넣으면 줄 바꿈이 공백으로 바뀝니다.
javascript:
var q = document.createElement('script');
q.src = 'http://svnpenn.github.io/bm/yt.js';
document.body.appendChild(q);
void 0;
FF 및 Chrome에서 테스트 된 메서드를 추가 할 수있는 경우 (가독성을 여러 줄로 분할하기 위해) :
javascript:var r = new XMLHttpRequest();
r.open("GET", "https://...my.js", true);
r.onloadend = function (oEvent) {
new Function(r.responseText)();
/* now you can use your code */
};
r.send();
undefined
나는 항상 인기있는 오픈 소스 프로젝트 loadjs 를 사용하는 것을 선호합니다.
크로스 브라우저 테스트를 거쳤으며 더 많은 기능 / 편안함을 제공합니다.
따라서 코드는 다음과 같습니다.
loadjs=function(){function e(e,n){var t,r,i,c=[],o=(e=e.push?e:[e]).length,f=o;for(t=function(e,t){t.length&&c.push(e),--f||n(c)};o--;)r=e[o],(i=s[r])?t(r,i):(u[r]=u[r]||[]).push(t)}function n(e,n){if(e){var t=u[e];if(s[e]=n,t)for(;t.length;)t[0](e,n),t.splice(0,1)}}function t(e,n,r,i){var o,s,u=document,f=r.async,a=(r.numRetries||0)+1,h=r.before||c;i=i||0,/(^css!|\.css$)/.test(e)?(o=!0,(s=u.createElement("link")).rel="stylesheet",s.href=e.replace(/^css!/,"")):((s=u.createElement("script")).src=e,s.async=void 0===f||f),s.onload=s.onerror=s.onbeforeload=function(c){var u=c.type[0];if(o&&"hideFocus"in s)try{s.sheet.cssText.length||(u="e")}catch(e){u="e"}if("e"==u&&(i+=1)<a)return t(e,n,r,i);n(e,u,c.defaultPrevented)},!1!==h(e,s)&&u.head.appendChild(s)}function r(e,n,r){var i,c,o=(e=e.push?e:[e]).length,s=o,u=[];for(i=function(e,t,r){if("e"==t&&u.push(e),"b"==t){if(!r)return;u.push(e)}--o||n(u)},c=0;c<s;c++)t(e[c],i,r)}function i(e,t,i){var s,u;if(t&&t.trim&&(s=t),u=(s?i:t)||{},s){if(s in o)throw"LoadJS";o[s]=!0}r(e,function(e){e.length?(u.error||c)(e):(u.success||c)(),n(s,e)},u)}var c=function(){},o={},s={},u={};return i.ready=function(n,t){return e(n,function(e){e.length?(t.error||c)(e):(t.success||c)()}),i},i.done=function(e){n(e,[])},i.reset=function(){o={},s={},u={}},i.isDefined=function(e){return e in o},i}();
loadjs('//path/external/js', {
success: function () {
console.log('something to run after the script was loaded');
});
참고 URL : https://stackoverflow.com/questions/106425/load-external-js-from-bookmarklet
반응형
'Programing' 카테고리의 다른 글
ggplot의 제어점 테두리 두께 (0) | 2020.11.12 |
---|---|
Phone gap vs React Native (0) | 2020.11.12 |
XML 스키마 버전 관리를위한 모범 사례는 무엇입니까? (0) | 2020.11.12 |
Eclipse에서 Maven 종속성 정렬 (0) | 2020.11.12 |
모듈 식 필드 액세스 수정 자로서 Dim, Global, Public 및 Private의 차이점은 무엇입니까? (0) | 2020.11.12 |