2014-05-08 47 views
0

我想在Facebook上的遊戲下顯示一些HTML元素。具體來說,一個鏈接到網站的圖像,但這不是問題的關鍵。Facebook和Unity3D JS注入困難

我明白什麼是必需的,並已成功使用Application.ExternalEval()方法和Facebook提供的示例JS字符串來在遊戲本身上添加一些HTML文本。

我在關注this page上的信息。

我已經嘗試下面的排列:

"var insertionPoint = body.children[0]; " + "body.insertBefore(headerElement, insertionPoint);"; 

"var insertionPoint = body.children[0]; " + "body.insertBefore(headerElement, insertionPoint.nextSibling);"; 

"var insertionPoint = body.children[1]; " + "body.insertBefore(headerElement, insertionPoint);"; 

幾個令人沮喪的試驗和錯誤的時間後,我一直無法生產工作JS注入代碼來顯示即時遊戲本身在畫布上下方HTML 。有人可以幫忙嗎?

回答

0

我一直試圖做同樣的令人沮喪的事情了一分鐘,這裏就是我的到來,不得不使用不同的瀏覽器不同的技術。

string injection = "if(navigator.userAgent.indexOf(\"Firefox\") >= 0){;" + 

      "var headerElement = document.createElement('div');" + 
      "headerElement.innerHTML = '<img src=\"URLTOSOURCE" style=\"width: 100%; text-align: center\" />';" + 
      "var body = document.getElementsByTagName('body')[0];" + 
      "var insertionPoint = body.lastChild;" + 
      "body.insertBefore(headerElement, insertionPoint);" + 

      "}else{;" + 

      "var headerElement = document.createElement('div');" + 
      "headerElement.innerHTML = '<img src=\"URLTOSOURCE" />';" + 
      "var body = document.getElementsByTagName('body')[0];" + 
      "var insertionPoint = body.children[0]; " + 
      "var unityPlayer = document.getElementById('unityPlayerEmbed');" + 
      "unityPlayer.parentNode.insertBefore(headerElement, unityPlayer.nextSibling);" + 
      "var embedTag = unityPlayer.getElementsByTagName('embed');" + 
      "embedTag[0].setAttribute('style','display:block;width:1200px;height:600px');" + 

      "};"; 

    Application.ExternalEval(injection); 
+0

這很好用 - 我在Chrome上進行了測試,Firefox代碼是所有必需的,以及正確設置Canvas高度。謝謝! – Silverfell

0

這應該是訣竅!

"var insertionPoint = body.lastChild;" 

我在我的博客上發佈技巧和教程,也可以查看facebook sdk教程!

blog.bigfootgaming.net

+0

這不起作用 - 當我使用body.lastChild時,文本剛剛消失。 – Silverfell