Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将Skype按钮添加到HTML面板_Javascript_Html_Gwt_Jsni - Fatal编程技术网

Javascript 将Skype按钮添加到HTML面板

Javascript 将Skype按钮添加到HTML面板,javascript,html,gwt,jsni,Javascript,Html,Gwt,Jsni,我正在使用GWT开发一个Web应用程序,并希望使用此生成器生成的代码: 我使用HTML面板是因为它看起来/工作起来像HTML(见下文)。我已经拥有的: EntryClass @Override public void onModuleLoad() { HTMLPanel htmlPanel = new HTMLPanel("<h1>Headline</h1>"); HTMLPanel skype = new HTMLPanel( "<s

我正在使用GWT开发一个Web应用程序,并希望使用此生成器生成的代码:

我使用HTML面板是因为它看起来/工作起来像HTML(见下文)。我已经拥有的:

EntryClass

@Override
public void onModuleLoad() {
    HTMLPanel htmlPanel = new HTMLPanel("<h1>Headline</h1>");
    HTMLPanel skype = new HTMLPanel(
       "<script type=\"text/javascript\"
       src=\"http://www.skypeassets.com/i/scom/js/skype-uri.js\"></script>"
       + "<script type=\"text/javascript\">"
       + "Skype.ui({\"name\": \"call\",\"element\": "
       + "\"SkypeButton_Call_My.User_1\",\"participants\": "
       + "[\"My.User\"], \"imageSize\": 32 });"
       + " </script> ");
    skype.getElement().setId("SkypeButton_Call_My.User_1");
    RootPanel.get().add(htmlPanel);
    RootPanel.get().add(skype);
    }
@覆盖
moduleload()上的公共void{
HTMLPanel HTMLPanel=新HTMLPanel(“标题”);
HTMLPanel skype=新HTMLPanel(
""
+ ""
+“Skype.ui({\'name\':\'call\',\'element\':”
+“\“SkypeButton\呼叫\我的用户\ 1\”,\“参与者\”:”
+“[\“My.User\”],\“imageSize\”:32})
+ "  ");
skype.getElement().setId(“SkypeButton\u Call\u My.User\u 1”);
RootPanel.get().add(htmlPanel);
RootPanel.get().add(skype);
}
当我运行此代码时,没有成功。这就是编译后HTML代码在浏览器中的外观

开发者工具(Chrome)


Skype.ui({
“名称”:“呼叫”,
“元素”:“SkypeButton\u Call\u My.User\u 1”,
“参与者”:[“我的用户”],
“图像大小”:32});
但当我在index.html文件中使用上述代码时,JS会根据skype生成的代码创建以下代码:

开发者工具(Chrome)


我的猜测是,我的应用程序不会像Web服务器对index.html那样执行生成的JS

在我的研究之后,我发现JSNI主题是合适的,但我不知道如何将生成的代码放入我的项目中(


有人能帮我解决这个问题吗?举个例子或说明会很好:)

您不能使用
innerHTML
(这是
HTMLPanel
使用的)注入脚本。您必须以编程方式构造
ScriptElement
s,或者使用GWT您可以简单地使用(但不要忘记
setWindow(TOP\u WINDOW)
)。

ScriptInjector.fromUrl(“http://www.skypeassets.com/i/scom/js/skype-uri.js")
.setWindow(ScriptInjector.TOP_窗口)
.setCallback(新回调(){
@凌驾
成功时公开作废(作废结果){
ScriptInjector.fromString(“Skype.ui({\'name\':\'call\',\'element\':”
+“\“SkypeButton\呼叫\我的用户\ 1\”,\“参与者\”:”
+“[\'My.User\'],\'imageSize\':32});”)
.setWindow(ScriptInjector.TOP_窗口)
.inject();
}
@凌驾
公共无效申报人(例外e){
GWT.报告未处理的异常(e);
}
})
.inject();

(请注意IE上的
setCallback
,请参阅javadoc)

thx您的答案,我必须将skype生成的skcript放在哪里才能注入它?我必须把a.js变大吗?谢谢@Thomas Broyer。工作很好:)
<div id="SkypeButton_Call_My.User_1">
   <script type="text/javascript" src="http://www.skypeassets.com/i/scom/js/skype-uri.js"></script>
   <script type="text/javascript">
      Skype.ui({
      "name": "call",
      "element":"SkypeButton_Call_My.User_1",
      "participants": ["My.User"], 
      "imageSize": 32 });
   </script> 
</div>
<a href="javascript://" 
  onclick="Skype.tryAnalyzeSkypeUri('call', '0');
  Skype.trySkypeUri_Generic('skype:My.User?call', '_detectSkypeClient_1393181312260', '0'); 
  return false;
">
<img src="http://www.skypeassets.com/i/scom/images/skype-buttons/callbutton_32px.png" 
  alt="Skype call" 
  role="Button" 
  style="border:0; 
  margin:32px; 
  vertical-align:-41px;">
</a>
ScriptInjector.fromUrl("http://www.skypeassets.com/i/scom/js/skype-uri.js")
    .setWindow(ScriptInjector.TOP_WINDOW)
    .setCallback(new Callback<Void, Exception>() {
       @Override
       public void onSuccess(Void result) {
         ScriptInjector.fromString("Skype.ui({\"name\": \"call\",\"element\": "
             + "\"SkypeButton_Call_My.User_1\",\"participants\": "
             + "[\"My.User\"], \"imageSize\": 32 });")
             .setWindow(ScriptInjector.TOP_WINDOW)
             .inject();
       }
       @Override
       public void onError(Exception e) {
         GWT.reportUnhandledException(e);
       }
    })
    .inject();