簡體   English   中英

通過JavaScript加載iOS'智能應用橫幅'

[英]Load iOS 'smart app banner' through JavaScript

我在iOS智能應用橫幅上遇到了一些麻煩,我正試圖通過JavaScript添加它。

實際的smartbanner就像將這個小塊添加到HTML的頭部一樣簡單:

<meta name="apple-itunes-app" content="app-id=1008622954">

不幸的是,我對上傳腳本的方式非常有限。 我無法直接更改HTML,因此我將通過我們的標記管理器來完成,它基本上是通過JavaScript完成的。 但事實證明這不起作用。

我試圖簡化測試的情況:

  1. HTML中的硬編碼標簽: 有效 (如預期的那樣)

     <meta name="apple-itunes-app" content="app-id=1008622954"> 
  2. 在文檔准備就緒時直接插入JavaScript: 有效

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

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

任何人都可以確認或解釋為什么這個延遲的JavaScript不起作用?

重要提示:測試在實際的iOS設備上打開頁面! 桌面Safari / Chrome或iOS模擬器無法使用。 此外, 請勿關閉橫幅 ,因為它不會再次出現。

更新

我添加了一些沒有jQuery的例子,所以簡單的'ol JavaScript。 但結果是一樣的。 一旦我們等待setTimeout() ,Smart App Banner就無法加載。

  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); } 
  2. Vanilla JavaScript - 延遲執行。 什么都不行

     setTimeout(showBanner, 1); function showBanner() { var meta = document.createElement("meta"); meta.name = "apple-itunes-app"; meta.content = "app-id=1008622954"; document.head.appendChild(meta); } 

更新2

異步加載腳本時可以觀察到完全相同的不幸行為

  1. 異步加載。 什么都不行

     <script src="async.js" async></script> 

    然后使用直接執行showBanner()調用相同的vanilla JavaScript;

     function showBanner() { var meta = document.createElement("meta"); meta.name = "apple-itunes-app"; meta.content = "app-id=1008622954"; document.head.appendChild(meta); } 

結論

我只能得出結論,iOS Safari只在主線程中查找smartbanner和HTML。 這讓我傷心:-(

只有直接可用的HTML或通過JavaScript同步添加的HTML。 但是不允許進行同步操作,無論是異步加載JavaScript,還是使用setTimeout() (或使用eval()的其他構造)

因為如果在頁面加載之后插入了野生動物,就不可能讓野生動物顯示原生橫幅(如上所述,並經過蘋果確認 ),唯一可行的解​​決方法是不使用原生智能橫幅,而是創建自己的智能橫幅。

例如,使用像這樣的javascript插件

截至2017年4月,智能橫幅廣告將在稍后通過JavaScript添加。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM