Logo

SharePoint Modern Page 的脚本引入部件

photo

2022年05月25日

  前言

  霖雨之前无聊,分享了一下自己闲暇之余开发的一个脚本引用的部件,专门为Modern页面使用。

  这里,也简单介绍一下webpart的逻辑,大家可以看看。

  正文

  1.首先,页面要引用一个加载JavaScript库的方法和一个自定义的CSS,如下:

import { SPComponentLoader } from '@microsoft/sp-loader';
require("./asset/Injection.css");

  2.整个功能非常非常非常简单,好吧,就是在页面上插入一个空的DIV,然后,有一个引入脚本的功能:

public render(): void {
  let ZoneId = this.properties.ZoneId,
    ImgSrc = require<string>('./asset/loading.gif'),
    Mesg = `<div id="linyuLoading"><div id="linyuLoadingImg"><img src="${ImgSrc}"></img></div><div id="linyuLoadingText">loading</div></div>`;

    Mesg = "<div id='linyuWarning'>Please configure \"Zone Id\" in WebPart Properties</div>";

  this.domElement.innerHTML = `<div id="${ZoneId}">${Mesg}</div>`;
  console.log("123");


  if (this.properties.JavaScirptLink != "")
    SPComponentLoader.loadScript(this.properties.JavaScirptLink);
}

  3.然后,就是添加右侧webpart属性,如下:

protected getPropertyPaneConfiguration(): IPropertyPaneConfiguration {
  return {
    pages: [
      {
        groups: [
          {
            groupName: "WebPart Properties",
            groupFields: [
              PropertyPaneTextField('ZoneId', {
                label: "Zone Id",
                description: "Please enter your Zone Id"
              }),
              PropertyPaneTextField('JavaScirptLink', {
                label: "JavaScirpt Link",
                description: "Please enter your JavaScript file reference URL",
              })
            ]
          }
        ]
      }
    ]
  };
}

  4.再有就是一个引入图片的方法:

let ImgSrc = require<string>('./asset/loading.gif')

  5.整个解决方案的功能非常简单,最初的想法就是在Modern页面中加入一个占位的Div,其ID可以配置,然后引入脚本就可以了。

  整个功能就是通过引入的脚本去获取数据,处理数据,然后填充到占位的DIV中就可以了。

  然后,代码调试的时候碰到一个问题,就是引入脚本过程是异步的,经常有脚本引入没完成,就执行下面的方法了。

  所以,下面一段代码很重要,其作用就是先引入脚本,等待脚本加载完毕执行回调函数。

function loadScript(url,callback){
    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = url;
    document.body.appendChild(script);

    if(script.readyState){
        script.onreadystatechange = function(){
            if(script.readyState == 'loaded' || script.readyState == 'complete'){
                script.onreadystatechange = null;
                callback();
            }
        }
    }else{
        script.onload = function(){
            callback();
        }
    }
}

  结束语

  在使用SharePoint Modern 页面中,无法定制化一直是一个大问题,然后,很多人都不具备SharePoint Framework的开发能力。

  这样一个开源的webpart大家可以尝试一下,也许会对大家使用SharePoint Online Modern页面有所帮助。

  Github:linyus/LinyuInjectionScriptWebpart (github.com)

橙子主题打折出售

其实我不卖,主要是这里是放广告的,所以就放了一个
毕竟主题都没做完,卖了也是坑.

购买它
所有附件
该文章没有附件.
本文为原创文章,请注意保留出处!
ElementUI快速入门 2022年05月25日

本文主要从几个方面快速入门ElementUI1、什么是ElementUI?掌握elementU...ElementUI快速入门

热门文章

无法握住的故土 在我们心灵最温暖的角落,总有一寸土地是属于故乡的。虽然我们看似已远离故土,可骨子里对故乡的依恋却是从未冷却过。我们无论漂泊他乡,还是在繁华都市平步青云,可故乡的悠悠情思总会潜入梦乡与你缠绵。是儿时那一缕缕茉莉的清香萦绕在梦境,也是邻家那已锈迹斑斑的铁壶里,开出艳丽的花儿在梦的边缘摇曳。故土就这样根深蒂固地在我们的灵魂深处烙下深深的印记。 作者:Pastore Antonio
1596 浏览量
EWS(Exchange Service)基本使用(获取个人会议,会议室会议内容,会议室列表,发送会议,修改会议,删除会议) 最近公司要求和exchange服务对接,所以稍微研究了一下官方文档,做出以下总结,欢迎大家补充。先...EWS(ExchangeService)基本使用(获取个人会议,会议室会议内容,会议室列表,发送会议,修改会议,删除会议) 作者:Pastore Antonio
1585 浏览量
Sql Server 部署SSIS包完成远程数据传输 本篇介绍如何使用SSIS和作业完成自动更新目标数据任务。**温馨提示:如需转载本文,请注明...SqlServer部署SSIS包完成远程数据传输 作者:Pastore Antonio
1579 浏览量
SQL Server AG集群启动不起来的临时自救大招 背景前晚一朋友遇到AG集群发生来回切换不稳定的情况,情急之下,朋友在命令行使用命令重启WSFC集群...SQLServerAG集群启动不起来的临时自救大招 作者:Pastore Antonio
1573 浏览量
windows 下安装 memcahce 官网上并未提供Memcached的Windows平台安装包,我们可以使用以下链接来下载,你需...windows下安装memcahce 作者:Pastore Antonio
1567 浏览量