cropper.vue 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <template>
  2. <view class="container">
  3. <web-view
  4. :webview-styles="webviewStyles"
  5. @message="handleMessage"
  6. :src="webviewSrc"
  7. >
  8. </web-view>
  9. </view>
  10. </template>
  11. <script>
  12. export default {
  13. name: "buuug7-img-cropper",
  14. data() {
  15. return {
  16. webviewStyles: {},
  17. platform: "",
  18. webviewSrc:
  19. "https://zhibo.liuniu946.com/index/hybrid/html/cropper/index.html",
  20. };
  21. },
  22. mounted() {
  23. const { platform } = uni.getSystemInfoSync();
  24. this.platform = platform;
  25. console.log(platform,'获取系统对象');
  26. if (platform === "windows" || platform === "mac") {
  27. this.handleH5Message();
  28. }
  29. // #ifdef H5
  30. window.addEventListener("message", this.handleMessage, false);
  31. // #endif
  32. },
  33. methods: {
  34. handleMessage(event) {
  35. console.log('消息传输',event);
  36. // uni.navigateBack({
  37. // delta: 1,
  38. // });
  39. const platform = this.platform;
  40. // #ifdef H5
  41. if(!event.data.data.type){
  42. return;
  43. }
  44. const data = event.data.data;
  45. // #endif
  46. // #ifndef H5
  47. const data = event.detail.data[0];
  48. // #endif
  49. console.log(platform,"myself")
  50. if (platform === "android" || platform === "ios" || platform === 'devtools') {
  51. const eventChannel = this.getOpenerEventChannel();
  52. eventChannel.emit("imgCropped", { data: data.dataUrl });
  53. }
  54. },
  55. handleH5Message(e) {
  56. console.log(`H5Message`);
  57. window.addEventListener("message", (event) => {
  58. const data = event.data.data;
  59. if (data && data.type === "croppedData") {
  60. const eventChannel = this.getOpenerEventChannel();
  61. eventChannel.emit("imgCropped", { data: data.dataUrl });
  62. }
  63. });
  64. },
  65. },
  66. };
  67. </script>
  68. <style></style>