当前位置: 首页 > news >正文

大型网站开发视频wordpress 对接酷q

大型网站开发视频,wordpress 对接酷q,wordpress在哪里修改,企业公示信息查询系统全国onBeforeUnload onBeforeUnload(callback: (event?: { url: string; message: string; result: JsResult }) boolean) 刷新或关闭场景下#xff0c;在即将离开当前页面时触发此回调。刷新或关闭当前页面应先通过点击等方式获取焦点#xff0c;才会触发此回调。 参数…onBeforeUnload onBeforeUnload(callback: (event?: { url: string; message: string; result: JsResult }) boolean) 刷新或关闭场景下在即将离开当前页面时触发此回调。刷新或关闭当前页面应先通过点击等方式获取焦点才会触发此回调。 参数 参数名参数类型参数描述urlstring当前显示弹窗所在网页的URL。messagestring弹窗中显示的信息。resultJsResult通知Web组件用户操作行为。 返回值 类型说明boolean当回调返回true时应用可以调用系统弹窗能力包括确认和取消并且需要根据用户的确认或取消操作调用JsResult通知Web组件最终是否离开当前页面。当回调返回false时函数中绘制的自定义弹窗无效。 示例 // xxx.ets import web_webview from ohos.web.webviewEntry Component struct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController()build() {Column() {Web({ src: $rawfile(index.html), controller: this.controller }).onBeforeUnload((event) {if (event) {console.log(event.url: event.url)console.log(event.message: event.message)AlertDialog.show({title: onBeforeUnload,message: text,primaryButton: {value: cancel,action: () {event.result.handleCancel()}},secondaryButton: {value: ok,action: () {event.result.handleConfirm()}},cancel: () {event.result.handleCancel()}})}return true})}} } 加载的html文件。 !--index.html-- !DOCTYPE html html headmeta nameviewport contentwidthdevice-width, initial-scale1.0 charsetutf-8 /head body onbeforeunloadreturn myFunction()h1WebView onBeforeUnload Demo/h1a hrefhttps://www.example.comClick here/ascriptfunction myFunction() {return onBeforeUnload Event;}/script /body /html onConfirm onConfirm(callback: (event?: { url: string; message: string; result: JsResult }) boolean) 网页调用confirm()告警时触发此回调。 参数 参数名参数类型参数描述urlstring当前显示弹窗所在网页的URL。messagestring弹窗中显示的信息。resultJsResult通知Web组件用户操作行为。 返回值 类型说明boolean当回调返回true时应用可以调用系统弹窗能力包括确认和取消并且需要根据用户的确认或取消操作调用JsResult通知Web组件。当回调返回false时函数中绘制的自定义弹窗无效。 示例 // xxx.ets import web_webview from ohos.web.webviewEntry Component struct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController()build() {Column() {Web({ src: $rawfile(index.html), controller: this.controller }).onConfirm((event) {if (event) {console.log(event.url: event.url)console.log(event.message: event.message)AlertDialog.show({title: onConfirm,message: text,primaryButton: {value: cancel,action: () {event.result.handleCancel()}},secondaryButton: {value: ok,action: () {event.result.handleConfirm()}},cancel: () {event.result.handleCancel()}})}return true})}} } 加载的html文件。 !--index.html-- !DOCTYPE html html headmeta nameviewport contentwidthdevice-width, initial-scale1.0 charsetutf-8 /headbodyh1WebView onConfirm Demo/h1button onclickmyFunction()Click here/buttonp iddemo/pscriptfunction myFunction() {let x;let r confirm(click button!);if (r true) {x ok;} else {x cancel;}document.getElementById(demo).innerHTML x;}/script /body /html onPrompt9 onPrompt(callback: (event?: { url: string; message: string; value: string; result: JsResult }) boolean) 网页调用prompt()告警时触发此回调。 参数 参数名参数类型参数描述urlstring当前显示弹窗所在网页的URL。messagestring弹窗中显示的信息。resultJsResult通知Web组件用户操作行为。 返回值 类型说明boolean当回调返回true时应用可以调用系统弹窗能力包括确认和取消并且需要根据用户的确认或取消操作调用JsResult通知Web组件。当回调返回false时函数中绘制的自定义弹窗无效。 示例 // xxx.ets import web_webview from ohos.web.webviewEntry Component struct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController()build() {Column() {Web({ src: $rawfile(index.html), controller: this.controller }).onPrompt((event) {if (event) {console.log(url: event.url)console.log(message: event.message)console.log(value: event.value)AlertDialog.show({title: onPrompt,message: text,primaryButton: {value: cancel,action: () {event.result.handleCancel()}},secondaryButton: {value: ok,action: () {event.result.handlePromptConfirm(event.value)}},cancel: () {event.result.handleCancel()}})}return true})}} } 加载的html文件。 !--index.html-- !DOCTYPE html html headmeta nameviewport contentwidthdevice-width, initial-scale1.0 charsetutf-8 /headbodyh1WebView onPrompt Demo/h1button onclickmyFunction()Click here/buttonp iddemo/pscriptfunction myFunction() {let message prompt(Message info, Hello World);if (message ! null message ! ) {document.getElementById(demo).innerHTML message;}}/script /body /html onConsole onConsole(callback: (event?: { message: ConsoleMessage }) boolean) 通知宿主应用JavaScript console消息。 参数 参数名参数类型参数描述messageConsoleMessage触发的控制台信息。 返回值 类型说明boolean当返回true时该条消息将不会再打印至控制台反之仍会打印至控制台。 示例 // xxx.ets import web_webview from ohos.web.webviewEntry Component struct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController()build() {Column() {Web({ src: www.example.com, controller: this.controller }).onConsole((event) {if (event) {console.log(getMessage: event.message.getMessage())console.log(getSourceId: event.message.getSourceId())console.log(getLineNumber: event.message.getLineNumber())console.log(getMessageLevel: event.message.getMessageLevel())}return false})}} } onDownloadStart onDownloadStart(callback: (event?: { url: string, userAgent: string, contentDisposition: string, mimetype: string, contentLength: number }) void) 通知主应用开始下载一个文件。 参数 参数名参数类型参数描述urlstring文件下载的URL。userAgentstring用于下载的用户代理。contentDispositionstring服务器返回的 Content-Disposition响应头可能为空。mimetypestring服务器返回内容媒体类型MIME信息。contentLengthnumber服务器返回文件的长度。 示例 // xxx.ets import web_webview from ohos.web.webviewEntry Component struct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController()build() {Column() {Web({ src: www.example.com, controller: this.controller }).onDownloadStart((event) {if (event) {console.log(url: event.url)console.log(userAgent: event.userAgent)console.log(contentDisposition: event.contentDisposition)console.log(contentLength: event.contentLength)console.log(mimetype: event.mimetype)}})}} } onErrorReceive onErrorReceive(callback: (event?: { request: WebResourceRequest, error: WebResourceError }) void) 网页加载遇到错误时触发该回调。出于性能考虑建议此回调中尽量执行简单逻辑。在无网络的情况下触发此回调。 参数 参数名参数类型参数描述requestWebResourceRequest网页请求的封装信息。errorWebResourceError网页加载资源错误的封装信息 。 示例 // xxx.ets import web_webview from ohos.web.webviewEntry Component struct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController()build() {Column() {Web({ src: www.example.com, controller: this.controller }).onErrorReceive((event) {if (event) {console.log(getErrorInfo: event.error.getErrorInfo())console.log(getErrorCode: event.error.getErrorCode())console.log(url: event.request.getRequestUrl())console.log(isMainFrame: event.request.isMainFrame())console.log(isRedirect: event.request.isRedirect())console.log(isRequestGesture: event.request.isRequestGesture())console.log(getRequestHeader_headerKey: event.request.getRequestHeader().toString())let result event.request.getRequestHeader()console.log(The request header result size is result.length)for (let i of result) {console.log(The request header key is : i.headerKey , value is : i.headerValue)}}})}} } onHttpErrorReceive onHttpErrorReceive(callback: (event?: { request: WebResourceRequest, response: WebResourceResponse }) void) 网页加载资源遇到的HTTP错误响应码400)时触发该回调。 参数 参数名参数类型参数描述requestWebResourceRequest网页请求的封装信息。responseWebResourceResponse资源响应的封装信息。 示例 // xxx.ets import web_webview from ohos.web.webviewEntry Component struct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController()build() {Column() {Web({ src: www.example.com, controller: this.controller }).onHttpErrorReceive((event) {if (event) {console.log(url: event.request.getRequestUrl())console.log(isMainFrame: event.request.isMainFrame())console.log(isRedirect: event.request.isRedirect())console.log(isRequestGesture: event.request.isRequestGesture())console.log(getResponseData: event.response.getResponseData())console.log(getResponseEncoding: event.response.getResponseEncoding())console.log(getResponseMimeType: event.response.getResponseMimeType())console.log(getResponseCode: event.response.getResponseCode())console.log(getReasonMessage: event.response.getReasonMessage())let result event.request.getRequestHeader()console.log(The request header result size is result.length)for (let i of result) {console.log(The request header key is : i.headerKey , value is : i.headerValue)}let resph event.response.getResponseHeader()console.log(The response header result size is resph.length)for (let i of resph) {console.log(The response header key is : i.headerKey , value is : i.headerValue)}}})}} } onPageBegin onPageBegin(callback: (event?: { url: string }) void) 网页开始加载时触发该回调且只在主frame触发iframe或者frameset的内容加载时不会触发此回调。 参数 参数名参数类型参数描述urlstring页面的URL地址。 示例 // xxx.ets import web_webview from ohos.web.webviewEntry Component struct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController()build() {Column() {Web({ src: www.example.com, controller: this.controller }).onPageBegin((event) {if (event) {console.log(url: event.url)}})}} } onPageEnd onPageEnd(callback: (event?: { url: string }) void) 网页加载完成时触发该回调且只在主frame触发。 参数 参数名参数类型参数描述urlstring页面的URL地址。 示例 // xxx.ets import web_webview from ohos.web.webviewEntry Component struct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController()build() {Column() {Web({ src: www.example.com, controller: this.controller }).onPageEnd((event) {if (event) {console.log(url: event.url)}})}} } onProgressChange onProgressChange(callback: (event?: { newProgress: number }) void) 网页加载进度变化时触发该回调。 参数 参数名参数类型参数描述newProgressnumber新的加载进度取值范围为0到100的整数。 示例 // xxx.ets import web_webview from ohos.web.webviewEntry Component struct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController()build() {Column() {Web({ src: www.example.com, controller: this.controller }).onProgressChange((event) {if (event) {console.log(newProgress: event.newProgress)}})}} } onTitleReceive onTitleReceive(callback: (event?: { title: string }) void) 网页document标题更改时触发该回调。 参数 参数名参数类型参数描述titlestringdocument标题内容。 示例 // xxx.ets import web_webview from ohos.web.webviewEntry Component struct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController()build() {Column() {Web({ src: www.example.com, controller: this.controller }).onTitleReceive((event) {if (event) {console.log(title: event.title)}})}} } onRefreshAccessedHistory onRefreshAccessedHistory(callback: (event?: { url: string, isRefreshed: boolean }) void) 加载网页页面完成时触发该回调用于应用更新其访问的历史链接。 参数 参数名参数类型参数描述urlstring访问的url。isRefreshedbooleantrue表示该页面是被重新加载的调用refresh9接口false表示该页面是新加载的。 示例 // xxx.ets import web_webview from ohos.web.webviewEntry Component struct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController()build() {Column() {Web({ src: www.example.com, controller: this.controller }).onRefreshAccessedHistory((event) {if (event) {console.log(url: event.url isReload: event.isRefreshed)}})}} } onSslErrorReceive(deprecated) onSslErrorReceive(callback: (event?: { handler: Function, error: object }) void) 通知用户加载资源时发生SSL错误。 说明 从API version 8开始支持从API version 9开始废弃。建议使用onSslErrorEventReceive9替代。 onFileSelectorShow(deprecated) onFileSelectorShow(callback: (event?: { callback: Function, fileSelector: object }) void) 调用此函数以处理具有“文件”输入类型的HTML表单以响应用户按下的“选择文件”按钮。 说明 从API version 8开始支持从API version 9开始废弃。建议使用onShowFileSelector9替代。 onRenderExited9 onRenderExited(callback: (event?: { renderExitReason: RenderExitReason }) void) 应用渲染进程异常退出时触发该回调。 参数 参数名参数类型参数描述renderExitReasonRenderExitReason渲染进程异常退出的具体原因。 示例 // xxx.ets import web_webview from ohos.web.webviewEntry Component struct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController()build() {Column() {Web({ src: chrome://crash/, controller: this.controller }).onRenderExited((event) {if (event) {console.log(reason: event.renderExitReason)}})}} } onShowFileSelector9 onShowFileSelector(callback: (event?: { result: FileSelectorResult, fileSelector: FileSelectorParam }) boolean) 调用此函数以处理具有“文件”输入类型的HTML表单以响应用户按下的“选择文件”按钮。 参数 参数名参数类型参数描述resultFileSelectorResult用于通知Web组件文件选择的结果。fileSelectorFileSelectorParam文件选择器的相关信息。 返回值 类型说明boolean当返回值为true时用户可以调用系统提供的弹窗能力。当回调返回false时函数中绘制的自定义弹窗无效。 示例 // xxx.ets import web_webview from ohos.web.webview; import picker from ohos.file.picker; import { BusinessError } from ohos.base;Entry Component struct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController()build() {Column() {Web({ src: $rawfile(index.html), controller: this.controller }).onShowFileSelector((event) {console.log(MyFileUploader onShowFileSelector invoked)const documentSelectOptions new picker.DocumentSelectOptions();let uri: string | null null;const documentViewPicker new picker.DocumentViewPicker();documentViewPicker.select(documentSelectOptions).then((documentSelectResult) {uri documentSelectResult[0];console.info(documentViewPicker.select to file succeed and uri is: uri);if (event) {event.result.handleFileList([uri]);}}).catch((err: BusinessError) {console.error(Invoke documentViewPicker.select failed, code is ${err.code}, message is ${err.message});})return true})}} } 加载的html文件。 !DOCTYPE html html headmeta nameviewport contentwidthdevice-width, initial-scale1.0 charsetutf-8 /head bodyform idupload-form enctypemultipart/form-datainput typefile idupload nameupload//form /body /html onResourceLoad9 onResourceLoad(callback: (event: {url: string}) void) 通知Web组件所加载的资源文件url信息。 参数 参数名参数类型参数描述urlstring所加载的资源文件url信息。 示例 // xxx.ets import web_webview from ohos.web.webviewEntry Component struct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController()build() {Column() {Web({ src: www.example.com, controller: this.controller }).onResourceLoad((event) {console.log(onResourceLoad: event.url)})}} } onScaleChange9 onScaleChange(callback: (event: {oldScale: number, newScale: number}) void) 当前页面显示比例的变化时触发该回调。 参数 参数名参数类型参数描述oldScalenumber变化前的显示比例百分比。newScalenumber变化后的显示比例百分比。 示例 // xxx.ets import web_webview from ohos.web.webviewEntry Component struct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController()build() {Column() {Web({ src: www.example.com, controller: this.controller }).onScaleChange((event) {console.log(onScaleChange changed from event.oldScale to event.newScale)})}} } onUrlLoadIntercept(deprecated) onUrlLoadIntercept(callback: (event?: { data:string | WebResourceRequest }) boolean) 当Web组件加载url之前触发该回调用于判断是否阻止此次访问。默认允许加载。 从API version 10开始不再维护建议使用onLoadIntercept10代替。 参数 参数名参数类型参数描述datastring | WebResourceRequesturl的相关信息。 返回值 类型说明boolean返回true表示阻止此次加载否则允许此次加载。 示例 // xxx.ets import web_webview from ohos.web.webviewEntry Component struct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController()build() {Column() {Web({ src: www.example.com, controller: this.controller }).onUrlLoadIntercept((event) {if (event) {console.log(onUrlLoadIntercept event.data.toString())}return true})}} } onInterceptRequest9 onInterceptRequest(callback: (event?: { request: WebResourceRequest}) WebResourceResponse) 当Web组件加载url之前触发该回调用于拦截url并返回响应数据。 参数 参数名参数类型参数描述requestWebResourceRequesturl请求的相关信息。 返回值 类型说明WebResourceResponse返回响应数据则按照响应数据加载无响应数据则返回null表示按照原来的方式加载。 示例 // xxx.ets import web_webview from ohos.web.webviewEntry Component struct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController()responseweb: WebResourceResponse new WebResourceResponse()heads:Header[] new Array()State webdata: string !DOCTYPE html\n html\nhead\ntitleintercept test/title\n/head\nbody\nh1intercept test/h1\n/body\n/htmlbuild() {Column() {Web({ src: www.example.com, controller: this.controller }).onInterceptRequest((event) {if (event) {console.log(url: event.request.getRequestUrl())}let head1:Header {headerKey:Connection,headerValue:keep-alive}let head2:Header {headerKey:Cache-Control,headerValue:no-cache}let length this.heads.push(head1)length this.heads.push(head2)this.responseweb.setResponseHeader(this.heads)this.responseweb.setResponseData(this.webdata)this.responseweb.setResponseEncoding(utf-8)this.responseweb.setResponseMimeType(text/html)this.responseweb.setResponseCode(200)this.responseweb.setReasonMessage(OK)return this.responseweb})}} } onHttpAuthRequest9 onHttpAuthRequest(callback: (event?: { handler: HttpAuthHandler, host: string, realm: string}) boolean) 通知收到http auth认证请求。 参数 参数名参数类型参数描述handlerHttpAuthHandler通知Web组件用户操作行为。hoststringHTTP身份验证凭据应用的主机。realmstringHTTP身份验证凭据应用的域。 返回值 类型说明boolean返回false表示此次认证失败否则成功。 示例 // xxx.ets import web_webview from ohos.web.webview Entry Component struct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController()httpAuth: boolean falsebuild() {Column() {Web({ src: www.example.com, controller: this.controller }).onHttpAuthRequest((event) {if (event) {AlertDialog.show({title: onHttpAuthRequest,message: text,primaryButton: {value: cancel,action: () {event.handler.cancel()}},secondaryButton: {value: ok,action: () {this.httpAuth event.handler.isHttpAuthInfoSaved()if (this.httpAuth false) {web_webview.WebDataBase.saveHttpAuthCredentials(event.host,event.realm,2222,2222)event.handler.cancel()}}},cancel: () {event.handler.cancel()}})}return true})}} } onSslErrorEventReceive9 onSslErrorEventReceive(callback: (event: { handler: SslErrorHandler, error: SslError }) void) 通知用户加载资源时发生SSL错误。 参数 参数名参数类型参数描述handlerSslErrorHandler通知Web组件用户操作行为。errorSslError错误码。 示例 // xxx.ets import web_webview from ohos.web.webview Entry Component struct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController()httpAuth: boolean falsebuild() {Column() {Web({ src: www.example.com, controller: this.controller }).onHttpAuthRequest((event) {if (event) {AlertDialog.show({title: onHttpAuthRequest,message: text,primaryButton: {value: cancel,action: () {event.handler.cancel()}},secondaryButton: {value: ok,action: () {this.httpAuth event.handler.isHttpAuthInfoSaved()if (this.httpAuth false) {web_webview.WebDataBase.saveHttpAuthCredentials(event.host,event.realm,2222,2222)event.handler.cancel()}}},cancel: () {event.handler.cancel()}})}return true})}} } onClientAuthenticationRequest9 onClientAuthenticationRequest(callback: (event: {handler : ClientAuthenticationHandler, host : string, port : number, keyTypes : Arraystring, issuers : Arraystring}) void) 通知用户收到SSL客户端证书请求事件。 参数 参数名参数类型参数描述handlerClientAuthenticationHandler通知Web组件用户操作行为。hoststring请求证书服务器的主机名。portnumber请求证书服务器的端口号。keyTypesArraystring可接受的非对称秘钥类型。issuersArraystring与私钥匹配的证书可接受颁发者。 示例 未对接证书管理的双向认证。 // xxx.ets API9 import web_webview from ohos.web.webview Entry Component struct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController()build() {Column() {Web({ src: www.example.com, controller: this.controller }).onClientAuthenticationRequest((event) {AlertDialog.show({title: onClientAuthenticationRequest,message: text,primaryButton: {value: confirm,action: () {event.handler.confirm(/system/etc/user.pk8, /system/etc/chain-user.pem)}},secondaryButton: {value: cancel,action: () {event.handler.cancel()}},cancel: () {event.handler.ignore()}})})}} } 对接证书管理的双向认证。 构造单例对象GlobalContext。 // GlobalContext.ts export class GlobalContext {private constructor() {}private static instance: GlobalContext;private _objects new Mapstring, Object();public static getContext(): GlobalContext {if (!GlobalContext.instance) {GlobalContext.instance new GlobalContext();}return GlobalContext.instance;}getObject(value: string): Object | undefined {return this._objects.get(value);}setObject(key: string, objectClass: Object): void {this._objects.set(key, objectClass);} } 实现双向认证。 // xxx.ets API10 import common from ohos.app.ability.common; import Want from ohos.app.ability.Want; import web_webview from ohos.web.webview import { BusinessError } from ohos.base; import bundleManager from ohos.bundle.bundleManager import { GlobalContext } from ../GlobalContextlet uri ;export default class CertManagerService {private static sInstance: CertManagerService;private authUri ;private appUid ;public static getInstance(): CertManagerService {if (CertManagerService.sInstance null) {CertManagerService.sInstance new CertManagerService();}return CertManagerService.sInstance;}async grantAppPm(callback: (message: string) void) {let message ;let bundleFlags bundleManager.BundleFlag.GET_BUNDLE_INFO_DEFAULT | bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION;//注com.example.myapplication需要写实际应用名称try {bundleManager.getBundleInfoForSelf(bundleFlags).then((data) {console.info(getBundleInfoForSelf successfully. Data: %{public}s, JSON.stringify(data));this.appUid data.appInfo.uid.toString();}).catch((err: BusinessError) {console.error(getBundleInfoForSelf failed. Cause: %{public}s, err.message);});} catch (err) {let message (err as BusinessError).message;console.error(getBundleInfoForSelf failed: %{public}s, message);}//注需要在MainAbility.ts文件的onCreate函数里添加GlobalContext.getContext().setObject(AbilityContext, this.context)let abilityContext GlobalContext.getContext().getObject(AbilityContext) as common.UIAbilityContextawait abilityContext.startAbilityForResult({bundleName: com.ohos.certmanager,abilityName: MainAbility,uri: requestAuthorize,parameters: {appUid: this.appUid, //传入申请应用的appUid}} as Want).then((data: common.AbilityResult) {if (!data.resultCode data.want) {if (data.want.parameters) {this.authUri data.want.parameters.authUri as string; //授权成功后获取返回的authUri}}})message after grantAppPm authUri: this.authUri;uri this.authUri;callback(message)}}EntryComponentstruct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController();State message: string Hello World //message主要是调试观察使用certManager CertManagerService.getInstance();build() {Row() {Column() {Row() {//第一步需要先进行授权获取到uriButton(GrantApp).onClick(() {this.certManager.grantAppPm((data) {this.message data;});})//第二步授权后双向认证会通过onClientAuthenticationRequest回调将uri传给web进行认证Button(ClientCertAuth).onClick(() {this.controller.loadUrl(https://www.example2.com); //支持双向认证的服务器网站})}Web({ src: https://www.example1.com, controller: this.controller }).fileAccess(true).javaScriptAccess(true).domStorageAccess(true).onlineImageAccess(true).onClientAuthenticationRequest((event) {AlertDialog.show({title: ClientAuth,message: Text,confirm: {value: Confirm,action: () {event.handler.confirm(uri);}},cancel: () {event.handler.cancel();}})})}}.width(100%).height(100%)}} onPermissionRequest9 onPermissionRequest(callback: (event?: { request: PermissionRequest }) void) 通知收到获取权限请求。 参数 参数名参数类型参数描述requestPermissionRequest通知Web组件用户操作行为。 示例 // xxx.ets import web_webview from ohos.web.webviewEntry Component struct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController()build() {Column() {Web({ src: $rawfile(index.html), controller: this.controller }).onPermissionRequest((event) {if (event) {AlertDialog.show({title: title,message: text,primaryButton: {value: deny,action: () {event.request.deny()}},secondaryButton: {value: onConfirm,action: () {event.request.grant(event.request.getAccessibleResource())}},cancel: () {event.request.deny()}})}})}} } 加载的html文件。 !-- index.html --!DOCTYPE htmlhtmlheadmeta charsetUTF-8/headbodyvideo idvideo width500px height500px autoplayautoplay/videocanvas idcanvas width500px height500px/canvasbrinput typebutton titleHTML5摄像头 value开启摄像头 onclickgetMedia()/scriptfunction getMedia(){let constraints {video: {width: 500, height: 500},audio: true};//获取video摄像头区域let video document.getElementByld(video);//返回的Promise对象let promise navigator.mediaDevices.getUserMedia(constraints);//then()异步调用MediaStream对象作为参数promise.then(function (MediaStream) {video.srcObject MediaStream;video.play();});}/script/body/html onContextMenuShow9 onContextMenuShow(callback: (event?: { param: WebContextMenuParam, result: WebContextMenuResult }) boolean) 长按特定元素例如图片链接或鼠标右键跳出菜单。 参数 参数名参数类型参数描述paramWebContextMenuParam菜单相关参数。resultWebContextMenuResult菜单相应事件传入内核。 返回值 类型说明boolean自定义菜单返回true触发的自定义菜单无效返回false。 示例 // xxx.ets import web_webview from ohos.web.webview import pasteboard from ohos.pasteboard const TAG ContextMenu;Entry Component struct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController()private result: WebContextMenuResult | undefined undefined;State linkUrl: string ;State offsetX: number 0;State offsetY: number 0;State showMenu: boolean false;Builder//构建自定义菜单及触发功能接口MenuBuilder(){//以垂直列表形式显示的菜单。Menu(){//展示菜单Menu中具体的item菜单项。MenuItem({content: 复制图片,}).width(100).height(50).onClick(() {this.result?.copyImage();this.showMenu false;})MenuItem({content: 剪切,}).width(100).height(50).onClick(() {this.result?.cut();this.showMenu false;})MenuItem({content: 复制,}).width(100).height(50).onClick(() {this.result?.copy();this.showMenu false;})MenuItem({content: 粘贴,}).width(100).height(50).onClick(() {this.result?.paste();this.showMenu false;})MenuItem({content: 复制链接,}).width(100).height(50).onClick(() {let pasteData pasteboard.createData(text/plain, this.linkUrl);pasteboard.getSystemPasteboard().setData(pasteData, (error){if(error){return;}})this.showMenu false;})MenuItem({content: 全选,}).width(100).height(50).onClick(() {this.result?.selectAll();this.showMenu false;})}.width(150).height(300)}build() {Column() {Web({ src: $rawfile(index.html), controller: this.controller })//触发自定义弹窗.onContextMenuShow((event) {if (event) {this.result event.resultconsole.info(x coord event.param.x())console.info(link url event.param.getLinkUrl())this.linkUrl event.param.getLinkUrl()}console.info(TAG, x: ${this.offsetX}, y: ${this.offsetY});this.showMenu true;this.offsetX 250;this.offsetY Math.max(px2vp(event?.param.y() ?? 0) - 0, 0);return true}).bindPopup(this.showMenu,{builder: this.MenuBuilder(),enableArrow: false,placement: Placement.LeftTop,offset: { x: this.offsetX, y: this.offsetY},mask: false,onStateChange: (e) {if(!e.isVisible){this.showMenu false;this.result!.closeContextMenu();}}})}} } 加载的html文件。 !-- index.html -- !DOCTYPE html html langen bodyh1onContextMenuShow/h1a hrefhttp://www.example.com stylefont-size:27px链接www.example.com/a//rawfile下放任意一张图片命名为example.pngdivimg srcexample.png/divp选中文字鼠标右键弹出菜单/p /body /html onContextMenuHide11 onContextMenuHide(callback: OnContextMenuHideCallback) 长按特定元素例如图片链接或鼠标右键隐藏菜单。 参数 参数名参数类型参数描述callbackOnContextMenuHideCallback菜单相关参数。 示例 // xxx.ets import web_webview from ohos.web.webviewEntry Component struct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController()build() {Column() {Web({ src: www.example.com, controller: this.controller }).onContextMenuHide(() {console.log(onContextMenuHide callback)})}} } onScroll9 onScroll(callback: (event: {xOffset: number, yOffset: number}) void) 通知网页滚动条滚动位置。 参数 参数名参数类型参数描述xOffsetnumber以网页最左端为基准水平滚动条滚动所在位置。yOffsetnumber以网页最上端为基准竖直滚动条滚动所在位置。 示例 // xxx.ets import web_webview from ohos.web.webviewEntry Component struct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController()build() {Column() {Web({ src: www.example.com, controller: this.controller }).onScroll((event) {console.info(x event.xOffset)console.info(y event.yOffset)})}} } onGeolocationShow onGeolocationShow(callback: (event?: { origin: string, geolocation: JsGeolocation }) void) 通知用户收到地理位置信息获取请求。 参数 参数名参数类型参数描述originstring指定源的字符串索引。geolocationJsGeolocation通知Web组件用户操作行为。 示例 // xxx.ets import web_webview from ohos.web.webviewEntry Component struct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController()build() {Column() {Web({ src:$rawfile(index.html), controller:this.controller }).geolocationAccess(true).onGeolocationShow((event) {if (event) {AlertDialog.show({title: title,message: text,confirm: {value: onConfirm,action: () {event.geolocation.invoke(event.origin, true, true)}},cancel: () {event.geolocation.invoke(event.origin, false, true)}})}})}} } 加载的html文件。 !DOCTYPE html html body p idlocationInfo位置信息/p button onclickgetLocation()获取位置/button script var locationInfodocument.getElementById(locationInfo); function getLocation(){if (navigator.geolocation) {!-- 前端页面访问设备地理位置 --navigator.geolocation.getCurrentPosition(showPosition);} } function showPosition(position){locationInfo.innerHTMLLatitude: position.coords.latitude br /Longitude: position.coords.longitude; } /script /body /html onGeolocationHide onGeolocationHide(callback: () void) 通知用户先前被调用onGeolocationShow时收到地理位置信息获取请求已被取消。 参数 参数名参数类型参数描述callback() void地理位置信息获取请求已被取消的回调函数。 示例 // xxx.ets import web_webview from ohos.web.webviewEntry Component struct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController()build() {Column() {Web({ src:www.example.com, controller:this.controller }).geolocationAccess(true).onGeolocationHide(() {console.log(onGeolocationHide...)})}} } onFullScreenEnter9 onFullScreenEnter(callback: (event: { handler: FullScreenExitHandler }) void) 通知开发者web组件进入全屏模式。 参数 参数名参数类型参数描述handlerFullScreenExitHandler用于退出全屏模式的函数句柄。 示例 // xxx.ets import web_webview from ohos.web.webviewEntry Component struct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController()handler: FullScreenExitHandler | null nullbuild() {Column() {Web({ src:www.example.com, controller:this.controller }).onFullScreenEnter((event) {console.log(onFullScreenEnter...)this.handler event.handler})}} } onFullScreenExit9 onFullScreenExit(callback: () void) 通知开发者web组件退出全屏模式。 参数 参数名参数类型参数描述callback() void退出全屏模式时的回调函数。 示例 // xxx.ets import web_webview from ohos.web.webviewEntry Component struct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController()handler: FullScreenExitHandler | null nullbuild() {Column() {Web({ src:www.example.com, controller:this.controller }).onFullScreenExit(() {console.log(onFullScreenExit...)if (this.handler) {this.handler.exitFullScreen()}}).onFullScreenEnter((event) {this.handler event.handler})}} } onWindowNew9 onWindowNew(callback: (event: {isAlert: boolean, isUserTrigger: boolean, targetUrl: string, handler: ControllerHandler}) void) 使能multiWindowAccess情况下通知用户新建窗口请求。 若不调用event.handler.setWebController接口会造成render进程阻塞。 如果不需要打开新窗口在调用event.handler.setWebController接口时须设置成null。 参数 参数名参数类型参数描述isAlertbooleantrue代表请求创建对话框false代表新标签页。isUserTriggerbooleantrue代表用户触发false代表非用户触发。targetUrlstring目标url。handlerControllerHandler用于设置新建窗口的WebviewController实例。 示例 // xxx.ets import web_webview from ohos.web.webview//在同一page页有两个web组件。在WebComponent新开窗口时会跳转到NewWebViewComp。 CustomDialog struct NewWebViewComp { controller?: CustomDialogController webviewController1: web_webview.WebviewController new web_webview.WebviewController() build() {Column() {Web({ src: , controller: this.webviewController1 }).javaScriptAccess(true).multiWindowAccess(false).onWindowExit(() {console.info(NewWebViewComp onWindowExit)if (this.controller) {this.controller.close()}})}} }Entry Component struct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController()dialogController: CustomDialogController | null nullbuild() {Column() {Web({ src: www.example.com, controller: this.controller }).javaScriptAccess(true)//需要使能multiWindowAccess.multiWindowAccess(true).allowWindowOpenMethod(true).onWindowNew((event) {if (this.dialogController) {this.dialogController.close()}let popController:web_webview.WebviewController new web_webview.WebviewController()this.dialogController new CustomDialogController({builder: NewWebViewComp({webviewController1: popController})})this.dialogController.open()//将新窗口对应WebviewController返回给Web内核。//如果不需要打开新窗口请调用event.handler.setWebController接口设置成null。//若不调用event.handler.setWebController接口会造成render进程阻塞。event.handler.setWebController(popController)})}} } onWindowExit9 onWindowExit(callback: () void) 通知用户窗口关闭请求。 参数 参数名参数类型参数描述callback() void窗口请求关闭的回调函数。 示例 // xxx.ets import web_webview from ohos.web.webviewEntry Component struct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController()build() {Column() {Web({ src:www.example.com, controller: this.controller }).onWindowExit(() {console.log(onWindowExit...)})}} } onSearchResultReceive9 onSearchResultReceive(callback: (event?: {activeMatchOrdinal: number, numberOfMatches: number, isDoneCounting: boolean}) void): WebAttribute 回调通知调用方网页页内查找的结果。 参数 参数名参数类型参数描述activeMatchOrdinalnumber当前匹配的查找项的序号从0开始。numberOfMatchesnumber所有匹配到的关键词的个数。isDoneCountingboolean当次页内查找操作是否结束。该方法可能会回调多次直到isDoneCounting为true为止。 示例 // xxx.ets import web_webview from ohos.web.webviewEntry Component struct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController()build() {Column() {Web({ src: www.example.com, controller: this.controller }).onSearchResultReceive(ret {if (ret) {console.log(on search result receive: [cur] ret.activeMatchOrdinal [total] ret.numberOfMatches [isDone] ret.isDoneCounting)}})}} } onDataResubmitted9 onDataResubmitted(callback: (event: {handler: DataResubmissionHandler}) void) 设置网页表单可以重新提交时触发的回调函数。 参数 参数名参数类型参数描述handlerDataResubmissionHandler表单数据重新提交句柄。 示例 // xxx.ets import web_webview from ohos.web.webview import business_error from ohos.base; Entry Component struct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController()build() {Column() {//在网页中点击提交之后点击refresh按钮可以重新提交时的触发函数。Button(refresh).onClick(() {try {this.controller.refresh();} catch (error) {let e: business_error.BusinessError error as business_error.BusinessError;console.error(ErrorCode: ${e.code}, Message: ${e.message});}})Web({ src:$rawfile(index.html), controller: this.controller }).onDataResubmitted((event) {console.log(onDataResubmitted)event.handler.resend();})}} } 加载的html文件。 !-- index.html --!DOCTYPE htmlhtmlheadmeta charsetutf-8/headbodyform actionhttp://httpbin.org/post methodpostinput typetext nameusernameinput typesubmit name提交/form/body/html onPageVisible9 onPageVisible(callback: (event: {url: string}) void) 设置旧页面不再呈现新页面即将可见时触发的回调函数。 参数 参数名参数类型参数描述urlstring旧页面不再呈现新页面即将可见时新页面的url地址。 示例 // xxx.ets import web_webview from ohos.web.webview Entry Component struct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController()build() {Column() {Web({ src:www.example.com, controller: this.controller }).onPageVisible((event) {console.log(onPageVisible url: event.url)})}} } onInterceptKeyEvent9 onInterceptKeyEvent(callback: (event: KeyEvent) boolean) 设置键盘事件的回调函数该回调在被Webview使用前触发。 参数 参数名参数类型参数描述eventKeyEvent触发的KeyEvent事件。 返回值 类型说明boolean回调函数通过返回boolean类型值来决定是否继续将该KeyEvent传入Webview内核。 示例 // xxx.ets import web_webview from ohos.web.webview Entry Component struct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController()build() {Column() {Web({ src:www.example.com, controller: this.controller }).onInterceptKeyEvent((event) {if (event.keyCode 2017 || event.keyCode 2018) {console.info(onInterceptKeyEvent get event.keyCode ${event.keyCode})return true;}return false;})}} } onTouchIconUrlReceived9 onTouchIconUrlReceived(callback: (event: {url: string, precomposed: boolean}) void) 设置接收到apple-touch-icon url地址时的回调函数。 参数 参数名参数类型参数描述urlstring接收到的apple-touch-icon url地址。precomposedboolean对应apple-touch-icon是否为预合成。 示例 // xxx.ets import web_webview from ohos.web.webview Entry Component struct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController()build() {Column() {Web({ src:www.baidu.com, controller: this.controller }).onTouchIconUrlReceived((event) {console.log(onTouchIconUrlReceived: JSON.stringify(event))})}} } onFaviconReceived9 onFaviconReceived(callback: (event: { favicon: PixelMap }) void) 设置应用为当前页面接收到新的favicon时的回调函数。 参数 参数名参数类型参数描述faviconPixelMap接收到的favicon图标的PixelMap对象。 示例 // xxx.ets import web_webview from ohos.web.webview import image from ohos.multimedia.image Entry Component struct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController()State icon: image.PixelMap | undefined undefined;build() {Column() {Web({ src:www.example.com, controller: this.controller }).onFaviconReceived((event) {console.log(onFaviconReceived);this.icon event.favicon;})}} } onAudioStateChanged10 onAudioStateChanged(callback: (event: { playing: boolean }) void) 设置网页上的音频播放状态发生改变时的回调函数。 参数 参数名参数类型参数描述playingboolean当前页面的音频播放状态true表示正在播放false表示未播放。 示例 // xxx.ets import web_webview from ohos.web.webview Entry Component struct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController()State playing: boolean falsebuild() {Column() {Web({ src:www.example.com, controller: this.controller }).onAudioStateChanged(event {this.playing event.playingconsole.debug(onAudioStateChanged playing: this.playing)})}} } onFirstContentfulPaint10 onFirstContentfulPaint(callback: (event?: { navigationStartTick: number, firstContentfulPaintMs: number }) void) 设置网页首次内容绘制回调函数。 参数 参数名参数类型参数描述navigationStartTicknumbernavigation开始的时间单位以微秒表示。firstContentfulPaintMsnumber从navigation开始第一次绘制内容的时间单位是以毫秒表示。 示例 // xxx.ets import web_webview from ohos.web.webview Entry Component struct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController()build() {Column() {Web({ src:www.example.com, controller: this.controller }).onFirstContentfulPaint(event {if (event) {console.log(onFirstContentfulPaint: [navigationStartTick]: event.navigationStartTick , [firstContentfulPaintMs]: event.firstContentfulPaintMs)}})}} } onLoadIntercept10 onLoadIntercept(callback: (event: { data: WebResourceRequest }) boolean) 当Web组件加载url之前触发该回调用于判断是否阻止此次访问。默认允许加载。 参数 参数名参数类型参数描述dataWebResourceRequesturl请求的相关信息。 返回值 类型说明boolean返回true表示阻止此次加载否则允许此次加载。 示例 // xxx.ets import web_webview from ohos.web.webviewEntry Component struct WebComponent {controller: web_webview.WebviewController new web_webview.WebviewController()build() {Column() {Web({ src: www.example.com, controller: this.controller }).onLoadIntercept((event) {console.log(url: event.data.getRequestUrl())console.log(isMainFrame: event.data.isMainFrame())console.log(isRedirect: event.data.isRedirect())console.log(isRequestGesture: event.data.isRequestGesture())return true})}} } 最后有很多小伙伴不知道学习哪些鸿蒙开发技术不知道需要重点掌握哪些鸿蒙应用开发知识点而且学习时频繁踩坑最终浪费大量时间。所以有一份实用的鸿蒙Harmony NEXT资料用来跟着学习是非常有必要的。  这份鸿蒙Harmony NEXT资料包含了鸿蒙开发必掌握的核心知识要点内容包含了ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等鸿蒙Harmony NEXT技术知识点。 希望这一份鸿蒙学习资料能够给大家带来帮助有需要的小伙伴自行领取限时开源先到先得~无套路领取 获取这份完整版高清学习路线请点击→纯血版全套鸿蒙HarmonyOS学习资料 鸿蒙Harmony NEXT最新学习路线 HarmonOS基础技能 HarmonOS就业必备技能  HarmonOS多媒体技术 鸿蒙NaPi组件进阶 HarmonOS高级技能 初识HarmonOS内核 实战就业级设备开发 有了路线图怎么能没有学习资料呢小编也准备了一份联合鸿蒙官方发布笔记整理收纳的一套系统性的鸿蒙OpenHarmony 学习手册共计1236页与鸿蒙OpenHarmony 开发入门教学视频内容包含ArkTS、ArkUI、Web开发、应用模型、资源分类…等知识点。 获取以上完整版高清学习路线请点击→纯血版全套鸿蒙HarmonyOS学习资料 《鸿蒙 (OpenHarmony)开发入门教学视频》 《鸿蒙生态应用开发V2.0白皮书》 《鸿蒙 (OpenHarmony)开发基础到实战手册》 OpenHarmony北向、南向开发环境搭建 《鸿蒙开发基础》 ArkTS语言安装DevEco Studio运用你的第一个ArkTS应用ArkUI声明式UI开发.…… 《鸿蒙开发进阶》 Stage模型入门网络管理数据管理电话服务分布式应用开发通知与窗口管理多媒体技术安全技能任务管理WebGL国际化开发应用测试DFX面向未来设计鸿蒙系统移植和裁剪定制…… 《鸿蒙进阶实战》 ArkTS实践UIAbility应用网络案例…… 获取以上完整鸿蒙HarmonyOS学习资料请点击→纯血版全套鸿蒙HarmonyOS学习资料 总结 总的来说华为鸿蒙不再兼容安卓对中年程序员来说是一个挑战也是一个机会。只有积极应对变化不断学习和提升自己他们才能在这个变革的时代中立于不败之地。 
文章转载自:
http://www.morning.mwlxk.cn.gov.cn.mwlxk.cn
http://www.morning.dplmq.cn.gov.cn.dplmq.cn
http://www.morning.ccdyc.cn.gov.cn.ccdyc.cn
http://www.morning.kbfzp.cn.gov.cn.kbfzp.cn
http://www.morning.kwnnx.cn.gov.cn.kwnnx.cn
http://www.morning.lqchz.cn.gov.cn.lqchz.cn
http://www.morning.krxzl.cn.gov.cn.krxzl.cn
http://www.morning.ldspj.cn.gov.cn.ldspj.cn
http://www.morning.sxygc.cn.gov.cn.sxygc.cn
http://www.morning.qshxh.cn.gov.cn.qshxh.cn
http://www.morning.zmpqh.cn.gov.cn.zmpqh.cn
http://www.morning.wcjgg.cn.gov.cn.wcjgg.cn
http://www.morning.wpcfm.cn.gov.cn.wpcfm.cn
http://www.morning.elbae.cn.gov.cn.elbae.cn
http://www.morning.wglhz.cn.gov.cn.wglhz.cn
http://www.morning.xinyishufa.cn.gov.cn.xinyishufa.cn
http://www.morning.xtrzh.cn.gov.cn.xtrzh.cn
http://www.morning.gqtzb.cn.gov.cn.gqtzb.cn
http://www.morning.ychrn.cn.gov.cn.ychrn.cn
http://www.morning.sdktr.com.gov.cn.sdktr.com
http://www.morning.lpzqd.cn.gov.cn.lpzqd.cn
http://www.morning.nqrdx.cn.gov.cn.nqrdx.cn
http://www.morning.sxbgc.cn.gov.cn.sxbgc.cn
http://www.morning.xxiobql.cn.gov.cn.xxiobql.cn
http://www.morning.yfrlk.cn.gov.cn.yfrlk.cn
http://www.morning.bfcrp.cn.gov.cn.bfcrp.cn
http://www.morning.bpmtx.cn.gov.cn.bpmtx.cn
http://www.morning.rhjhy.cn.gov.cn.rhjhy.cn
http://www.morning.wkkqw.cn.gov.cn.wkkqw.cn
http://www.morning.kzrbn.cn.gov.cn.kzrbn.cn
http://www.morning.clbsd.cn.gov.cn.clbsd.cn
http://www.morning.rzmzm.cn.gov.cn.rzmzm.cn
http://www.morning.dtlqc.cn.gov.cn.dtlqc.cn
http://www.morning.krnzm.cn.gov.cn.krnzm.cn
http://www.morning.cmldr.cn.gov.cn.cmldr.cn
http://www.morning.dpdr.cn.gov.cn.dpdr.cn
http://www.morning.jfgmx.cn.gov.cn.jfgmx.cn
http://www.morning.pfnlc.cn.gov.cn.pfnlc.cn
http://www.morning.pznhn.cn.gov.cn.pznhn.cn
http://www.morning.brbnc.cn.gov.cn.brbnc.cn
http://www.morning.nbnq.cn.gov.cn.nbnq.cn
http://www.morning.mhnb.cn.gov.cn.mhnb.cn
http://www.morning.qncqd.cn.gov.cn.qncqd.cn
http://www.morning.xyjlh.cn.gov.cn.xyjlh.cn
http://www.morning.kzrg.cn.gov.cn.kzrg.cn
http://www.morning.spxsm.cn.gov.cn.spxsm.cn
http://www.morning.qsy41.cn.gov.cn.qsy41.cn
http://www.morning.rkyw.cn.gov.cn.rkyw.cn
http://www.morning.xmtzk.cn.gov.cn.xmtzk.cn
http://www.morning.chzbq.cn.gov.cn.chzbq.cn
http://www.morning.drytb.cn.gov.cn.drytb.cn
http://www.morning.yzdth.cn.gov.cn.yzdth.cn
http://www.morning.ydhck.cn.gov.cn.ydhck.cn
http://www.morning.wgbmj.cn.gov.cn.wgbmj.cn
http://www.morning.yhtnr.cn.gov.cn.yhtnr.cn
http://www.morning.trsmb.cn.gov.cn.trsmb.cn
http://www.morning.xdwcg.cn.gov.cn.xdwcg.cn
http://www.morning.rymb.cn.gov.cn.rymb.cn
http://www.morning.hydkd.cn.gov.cn.hydkd.cn
http://www.morning.rhkmn.cn.gov.cn.rhkmn.cn
http://www.morning.rrpsw.cn.gov.cn.rrpsw.cn
http://www.morning.rfmzc.cn.gov.cn.rfmzc.cn
http://www.morning.khxyx.cn.gov.cn.khxyx.cn
http://www.morning.ttkns.cn.gov.cn.ttkns.cn
http://www.morning.jlqn.cn.gov.cn.jlqn.cn
http://www.morning.xbzfz.cn.gov.cn.xbzfz.cn
http://www.morning.mjxgs.cn.gov.cn.mjxgs.cn
http://www.morning.rbqlw.cn.gov.cn.rbqlw.cn
http://www.morning.cgtrz.cn.gov.cn.cgtrz.cn
http://www.morning.dzrcj.cn.gov.cn.dzrcj.cn
http://www.morning.dbrnl.cn.gov.cn.dbrnl.cn
http://www.morning.qxlhj.cn.gov.cn.qxlhj.cn
http://www.morning.bxbnf.cn.gov.cn.bxbnf.cn
http://www.morning.ybhjs.cn.gov.cn.ybhjs.cn
http://www.morning.bpmfq.cn.gov.cn.bpmfq.cn
http://www.morning.msgrq.cn.gov.cn.msgrq.cn
http://www.morning.rhqn.cn.gov.cn.rhqn.cn
http://www.morning.bhrbr.cn.gov.cn.bhrbr.cn
http://www.morning.c7624.cn.gov.cn.c7624.cn
http://www.morning.npbkx.cn.gov.cn.npbkx.cn
http://www.tj-hxxt.cn/news/276669.html

相关文章:

  • 青岛网站营销推广设计新颖的网站建站
  • 昆山便宜做网站郑州妇科医院排行
  • wordpress页面不要菜单seo实战密码第三版pdf
  • 网站建设公司 选中企动力公司做网站建设有哪些公司
  • 网站制作需要平台佛山免费建站平台
  • 建设网站和备案中国十大热门网站
  • 思乐网站建设北京设计院排名100强
  • 男人和女人做不可描述的事情的网站站酷网页
  • 十大免费ppt网站下载自学网站建设视频
  • 做护肤品好的网站wordpress注册失败
  • 标准百度网站建设网站实名认证资料
  • 优化网站改版京东联盟网站建设电脑版
  • 备案 个人网站网站更改模板 seo
  • 台州建设监理协会网站有教做鱼骨图的网站吗
  • 做网站的优惠广告linux做网站服务器吗
  • 浙江网站建设哪家最好国内机械加工企业排名
  • 网站空间期限查询wordpress 的速度
  • 网站里面添加支付怎么做wordpress外贸网站建设
  • 交换链接适用于哪些网站哪些企业用wordpress建站
  • 做网站好用的cms教育机构网址
  • 网站备案期间做网页百度搜索数据
  • 博罗做网站手机自助建站平台免费
  • 佛山企业网站建设工作室郑州网站制作工具
  • 黄岛因特网站建设公司企业网站的设计论文
  • 江门制作网站公司网络管理系统功能
  • 网站建设的经费估算魔兽7.2国内做插件网站
  • 橙光文字游戏制作工具关键词优化精灵
  • 网站搭建玩要多长时间泊头市建设局官方网站
  • 青海省住房和建设厅网站首页手机怎么做弹幕小视频网站
  • 做二手回收哪个网站好合肥官方网站建设