/** * @author GTPark[kr16850] * @version 3.1.3 * @lastModified 2015-09-16 * * SNS 공유하기 기능을 제공하는 라이브러리 * Dependency : SocialPlugin, jQuery * 3.1.0 버전 이후로 SocialPluginSDK 코드를 내장한다. * * Support SNS Type * http://wiki.navercorp.com/pages/viewpage.action?pageId=256032483 참조 * http://spi.naver.com/ 참조 * * USAGE ) * * * * * *
* * 라인 * * * 밴드 * * */ window.SnsSharing = (function() { // define global constant var PC_PLATFORMS = "win16|win32|win64|mac|macintel"; var SOCIAL_PLUGIN_OPTIONS = { "evKey" : "modoo", "serviceName" : "modoo![모두]", "dimmed" : "custom", "onClick" : function(button) {}, "onShow" : function() {}, "onHide" : function() {}, "onResize" : function(event) {}, "onRotate" : function(event) {} }; var $TRIGGER = null; // Social Plugin Invoker (jquery object) if (!window.jQuery) { __require("http://code.jquery.com/jquery-latest.min.js", __init); } else { __init(); } // private functions function __init() { __loadSocialPluginSDK(); jQuery(document).ready(function() { __createTriggerElement(); __bindGlobalEventHandler(); }); } function __require(url, callback) { var elScript = document.createElement("script"); elScript.type = "text/javascript"; elScript.src = url; elScript.onload = callback; document.head.appendChild(elScript); } function __loadSocialPluginSDK() { var head = document.getElementsByTagName('head')[0]; var script = document.createElement('script'); script.type = 'text/javascript'; script.text = getFunctionBody(__isMobile() ?__splugin_mobile : __splugin_pc); head.appendChild(script); function getFunctionBody(func) { var sFunc = func.toString(); return sFunc.substring(sFunc.indexOf("{") + 1, sFunc.lastIndexOf("}")); } } function __createTriggerElement() { /** * 추가 옵션 * data-blog-source-form="2" * data-prevent-short-url="on" */ $TRIGGER = jQuery('SnsSharing'); jQuery(document.body).append($TRIGGER); } function __isMobile() { if (!navigator.platform) { return false; } return PC_PLATFORMS.indexOf(navigator.platform.toLowerCase()) == -1; } function __bindGlobalEventHandler() { jQuery(document).on("click", "[data-sns-sharing]", function(e) { var type = jQuery(this).attr("data-sns-sharing"); __share(type); }); } function __share(type) { var $target = $TRIGGER.find("[data-button=" + type + "], .lnk_" + type); if (!$target.length) { console.error("Unsupported sharing type", type); } __click($target); } function __click($el) { if (!__isMobile()) { $el[0].click(); return; } var event = document.createEvent("HTMLEvents"); event.initEvent("click", true, true); $el[0].dispatchEvent(event); } function __appendOgTagToHead(property, content) { var elOgDescription = document.createElement("meta"); elOgDescription.setAttribute("property", property); elOgDescription.setAttribute("content", content); document.getElementsByTagName("head")[0].appendChild(elOgDescription); } function __setOptions(options) { for (var propName in options) { if (!options.hasOwnProperty(propName)) { continue; } propName = handleLegacyOptions(options, propName); if(propName.match(/^data-/) != null) { $TRIGGER.attr(propName, options[propName]) } else { __setSocialPluginOption(propName, options[propName]); } } options["data-title"] && __appendOgTagToHead("og:description", options["data-title"]); window.__splugin = SocialPlugIn_Core(SOCIAL_PLUGIN_OPTIONS); // define inner util functions function handleLegacyOptions(options, propName) { if (propName == "message") { // message to title propName = "title"; options.title = options.message } if (jQuery.inArray(propName, ["title", "url"]) != -1) { // message, url to data attribute propName = changePropertyName(options, propName, "data-" + propName); } if (propName == "dataBlogSourceForm") { // support legacy code propName = "data-blog-source-from"; options["data-blog-source-from"] = options[propName]; } return propName; } function changePropertyName(object, oldPropName, newPropName) { object[newPropName] = options[oldPropName]; return newPropName; } } function __setSocialPluginOption(name, value) { if (name === undefined || value === undefined) { return; } SOCIAL_PLUGIN_OPTIONS[name] = value; } // public methods return { init : function(options) { __setOptions(options); }, share : function (type) { __share(type); } }; })(); function __splugin_pc() { function SocialPlugIn_Core(a){function j(a){t()&&(typeof a=="undefined"?k():(o(a),q(a)))}function k(){g.sCharset=f,e.isPlayerType()?e.loadCSS("naver-splugin-css-player",c._CSS["player_"+f+(window.location.protocol=="https:"?"_https":"")]):e.loadCSS("naver-splugin-css",c._CSS["standard_"+f+(window.location.protocol=="https:"?"_https":"")]);var a=c._htKakaoAppKeyV2[g.evKey]||c._htKakaoAppKeyV2.common;i||(SpiKakao.cleanup(),SpiKakao.init(a.key),i=a.key),h&&h.length>0&&o();var b=e.cssquery(c._SPLUGIN_CLASS);for(var d=0;d