首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在第一次加载网站时使用angular 9的Google音译api问题

在第一次加载网站时使用angular 9的Google音译api问题
EN

Stack Overflow用户
提问于 2020-05-08 13:41:20
回答 1查看 573关注 0票数 0

我的index.html中有以下脚本标记:

<script type="text/javascript" src="https://www.google.com/jsapi"></script>

我还有一个单独的音译服务,在该服务中,我从相应组件的AfterViewInit()方法调用initializeTransliteration()方法。

代码语言:javascript
复制
import { Injectable, OnInit } from "@angular/core";
import { Router } from "@angular/router";
declare var google:any; 

@Injectable()
export class Transliterate {
    constructor(private currentRouter:Router){}

    private async(){
      return new Promise(
        resolve=>{
          resolve( google.load("elements", "1", {packages:"transliteration", callback: ()=>{this.onLoad(this.currentRouter)} }) );
        }
      )
    }

    initializeTransliteration(){
      this.async().then(
        value =>{
          console.log(value);
        }
      );
    }

    private onLoad(router: Router){  
        var options = {
          sourceLanguage: 'en',
          destinationLanguage: ['ta'],
          shortcutKey: 'ctrl+g',
          transliterationEnabled: true
        };

  var opt_options ={
          adjustElementStyle : false,
          adjustElementDirection: true
        }

  var nodesArray:Array<Object> = Array.prototype.slice.call(document.querySelectorAll("textarea#tamilTransliterate"));

  var control = new google.elements.transliteration.TransliterationControl(options);

  control.makeTransliteratable(['tamilTransliterate'], opt_options);      
  control.c.qc.t13n.c[3].c.d.keyup[0].ia.F.p = 'https://www.google.com';

      }
}

当我在清除缓存后第一次加载应用程序时,我在控制台上收到以下错误消息,并且我无法在文本区进行音译。

loading elements other than inputtools with the jsapi loader is unsupported

但是,当我刷新浏览器几次时,这个问题就解决了,并且我能够音译我在文本区域中键入的文本。

这是在我更新到angular 9之后开始发生的。

网站网址:https://www.yaavarumkelir.com -顶部导航栏上的搜索栏启用了音译。

有没有人能帮我解决这个问题?

编辑:经过进一步的调查,我发现jsapi调用有时会在新加载时获得302,这就是为什么会发生这种情况。为什么google的jsapi调用会给出302?是不是因为我的代码做了一些不正确的事情?有人能告诉我,如果第一次返回302,cI如何再次调用jsapi?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-09 07:00:02

好的。在尝试了一天不同的方法后,下面的方法现在似乎有效。

我复制了https://www.google.com/jsapi的内容并创建了一个新文件jsapi.js。我把这个文件放在我的服务器的公共目录中。

我还将index.html文件中的脚本标记替换为:

<script defer type="text/javascript" src="jsapi.js"></script>

理由:我认为google repo的响应可能会很慢,在本地提供文件服务可能会解决这个问题,而且看起来它是有效的。如果我发现这种方法有任何问题,我会更新答案。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61672734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档