小编Koe*_*per的帖子

通过JavaScript加载iOS'智能应用横幅'

我在iOS智能应用横幅上遇到了一些麻烦,我正试图通过JavaScript添加它.

实际的smartbanner就像将这个小块添加到HTML的头部一样简单:

<meta name="apple-itunes-app" content="app-id=1008622954">
Run Code Online (Sandbox Code Playgroud)

不幸的是,我对上传脚本的方式非常有限.我无法直接更改HTML,因此我将通过我们的标记管理器来完成,它基本上是通过JavaScript完成的.但事实证明这不起作用.

我试图简化测试的情况:

  1. HTML中的硬编码标签:有效(如预期的那样)

    <meta name="apple-itunes-app" content="app-id=1008622954">
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在文档准备就绪时直接插入JavaScript:有效

    $(document).ready(function(){
        $("head").append('<meta name="apple-itunes-app" content="app-id=1008622954">');
    });
    
    Run Code Online (Sandbox Code Playgroud)
  3. 插入JavaScript后,setTimeout延迟:不工作

    $(document).ready(function(){
        setTimeout(showBanner, 1);  //after 1 millisecond
    });
    
    function showBanner(){
        $("head").append('<meta name="apple-itunes-app" content="app-id=1008622954">');
    }
    
    Run Code Online (Sandbox Code Playgroud)

任何人都可以确认或解释为什么这个延迟的JavaScript不起作用?

重要提示:测试在实际的iOS设备上打开页面!桌面Safari/Chrome或iOS模拟器无法使用.此外,请勿关闭横幅,因为它不会再次出现.

更新:

我添加了一些没有jQuery的例子,所以简单的'ol JavaScript.但结果是一样的.一旦我们等待setTimeout()智能应用程序横幅无法加载.

  1. Vanilla JavaScript - 直接执行.作品

    showBanner();
    
    function showBanner() {
        var meta = document.createElement("meta");
        meta.name = "apple-itunes-app";
        meta.content = "app-id=1008622954";
        document.head.appendChild(meta);
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. Vanilla JavaScript - 延迟执行.什么都不行

    setTimeout(showBanner, 1);
    
    function showBanner() { …
    Run Code Online (Sandbox Code Playgroud)

javascript mobile-safari ios smartbanner

11
推荐指数
1
解决办法
6200
查看次数

标签 统计

ios ×1

javascript ×1

mobile-safari ×1

smartbanner ×1