snapscreen.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. /**
  2. * 截屏插件,为UEditor提供插入支持
  3. * @file
  4. * @since 1.4.2
  5. */
  6. UE.plugin.register("snapscreen", function() {
  7. var me = this;
  8. var snapplugin;
  9. function getLocation(url) {
  10. var search,
  11. a = document.createElement("a"),
  12. params = utils.serializeParam(me.queryCommandValue("serverparam")) || "";
  13. a.href = url;
  14. if (browser.ie) {
  15. a.href = a.href;
  16. }
  17. search = a.search;
  18. if (params) {
  19. search = search + (search.indexOf("?") == -1 ? "?" : "&") + params;
  20. search = search.replace(/[&]+/gi, "&");
  21. }
  22. return {
  23. port: a.port,
  24. hostname: a.hostname,
  25. path: a.pathname + search || +a.hash
  26. };
  27. }
  28. return {
  29. commands: {
  30. /**
  31. * 字体背景颜色
  32. * @command snapscreen
  33. * @method execCommand
  34. * @param { String } cmd 命令字符串
  35. * @example
  36. * ```javascript
  37. * editor.execCommand('snapscreen');
  38. * ```
  39. */
  40. snapscreen: {
  41. execCommand: function(cmd) {
  42. var url, local, res;
  43. var lang = me.getLang("snapScreen_plugin");
  44. if (!snapplugin) {
  45. var container = me.container;
  46. var doc = me.container.ownerDocument || me.container.document;
  47. snapplugin = doc.createElement("object");
  48. try {
  49. snapplugin.type = "application/x-pluginbaidusnap";
  50. } catch (e) {
  51. return;
  52. }
  53. snapplugin.style.cssText =
  54. "position:absolute;left:-9999px;width:0;height:0;";
  55. snapplugin.setAttribute("width", "0");
  56. snapplugin.setAttribute("height", "0");
  57. container.appendChild(snapplugin);
  58. }
  59. function onSuccess(rs) {
  60. try {
  61. rs = eval("(" + rs + ")");
  62. if (rs.state == "SUCCESS") {
  63. var opt = me.options;
  64. me.execCommand("insertimage", {
  65. src: opt.snapscreenUrlPrefix + rs.url,
  66. _src: opt.snapscreenUrlPrefix + rs.url,
  67. alt: rs.title || "",
  68. floatStyle: opt.snapscreenImgAlign
  69. });
  70. } else {
  71. alert(rs.state);
  72. }
  73. } catch (e) {
  74. alert(lang.callBackErrorMsg);
  75. }
  76. }
  77. url = me.getActionUrl(me.getOpt("snapscreenActionName"));
  78. local = getLocation(url);
  79. setTimeout(function() {
  80. try {
  81. res = snapplugin.saveSnapshot(
  82. local.hostname,
  83. local.path,
  84. local.port
  85. );
  86. } catch (e) {
  87. me.ui._dialogs["snapscreenDialog"].open();
  88. return;
  89. }
  90. onSuccess(res);
  91. }, 50);
  92. },
  93. queryCommandState: function() {
  94. return navigator.userAgent.indexOf("Windows", 0) != -1 ? 0 : -1;
  95. }
  96. }
  97. }
  98. };
  99. });