2016-01-15 65 views
-2

我有一個var我需要作爲AS3的JSON字符串發送。它必須在鏈接中打印出來。如何讓我的var在如下所示的html的onClick中?javascript var到onClick在html中

<script> 
    var NeedMyVarHere = { 
    One:"This is var one!", 
    Two:"This is JSON Object 2" 
       }; 
     NeedMyVarHere = JSON.stringify(NeedMyVarHere); 
    </script> 


<a href="javascript:void(0);" onclick="AirBridge.evoke('myCustomFunction(NeedMyVarHere)')" return false;>Testing!</a> 

UPDATE澄清。

AS要求「發送字符串」,但您可以在字符串中聲明自定義函數。我沒有寫課。我只需要在我的onClick內部以String格式編寫的JSON對象。就像這樣:

onClick="AirBridge.evoke('myCustomFunction({One:"This is var one!",Two:"This is var Two"})" 

但我希望能使用單一的VAR將其打印出來一樣......

onClick="AirBridge.evoke('myCustomFunction(NeedMyVarHere)" 

我希望是有道理的。

+3

儘量不要使用內聯事件處理程序。 – Script47

+0

從函數返回?這似乎是一個非常簡單的答案,所以也許我不明白這個問題。 – CodingGorilla

+1

@Hacketo它是全球性的.... – epascarello

回答

0

更好地使用unobtrusive使用JavaScript的addEventListener。但對於這個解決方案,我會說:

onclick="AirBridge.evoke('myCustomFunction(NeedMyVarHere)')" return false; 
//---------------------------------------------------------^ " prematurely closed. 

更改爲:

onclick="AirBridge.evoke('myCustomFunction(' + NeedMyVarHere.One + ')'); return false;" 

或者:

onclick="AirBridge.evoke('myCustomFunction(NeedMyVarHere)'); return false;" 
+1

給予downvote的理由將是輝煌的。 ':)' –

+1

我在想同樣的事情。我問了一個問題,我得到了低估,沒有人解釋爲什麼。 –

+0

@PapaDeBeau ****碰巧... –

-1

與您的代碼的問題是它沒有經過參考變量因爲它只是一個硬編碼的字符串。由於它需要是一個字符串,所以最好使用addEventListener並構建字符串而不是內聯事件。

<a href="javascript:void(0);" id="myLink">xxxx</a> 

和腳本

document.getElementById("myLink").addEventListener("click", function (e) { 
    AirBridge.evoke("myCustomFunction('" + JSON.stringify(NeedMyVarHere) + "')"); 
    return false; // or e.preventDefault(); 
}); 

確保元素被添加後的頁面此行運行(元素後的文件準備好,onload事件,或者只是在身上。)

0

你不能做下面的例子嗎?

<script> 
    var NeedMyVarHere = { 
     One:"This is var one!", 
     Two:"This is JSON Object 2" 
    }; 
    NeedMyVarHere = JSON.stringify(NeedMyVarHere); 
    function onClickFunction() { 
     Airbridge.evoke(myCustomFunction(NeedMyVarHere)); 
    } 
</script> 
<a href="javascript:void(0);" onclick="onClickFunction()">Testing!</a> 

這種方式的onClick功能並不需要接受一個說法,但可以調用參數的函數「onClickFunction」然後調用函數(參數)你想在第一時間打電話。

+0

我爲什麼被低估? – Simon

+0

不是我,但當我看到你的代碼:'onclick =「onClickFunction」返回false;'是完全錯誤的。 –

+0

謝謝Praveen。修復。此代碼已經過測試並可以正常工作。:-) 雖然我不完全確定它是否解決了Papa的問題。 – Simon

0

這是在這裏詳細https://github.com/myflashlab/webView-ANE/issues/48但尚未解釋的,這裏有一個副本:

在你的JS

,創建一個按鈕或鏈接調用JS功能

<button type="button" onClick="sendComplexDataToAir()">Send Complex Data To Air</button> 

在你的js代碼,創建JSON和發送回航這樣的:

function sendComplexDataToAir() 
{ 
    var myJSONObject = 
    { 
     "someData": 
     [ 
      {"var1": "value 1"}, 
      {"var2": "value 2"}, 
      {"var3": "value 3"}, 
      {"var3": "As long as you have a valid Json in JS, you can have it received on the Air side with no problem!"} 
     ] 
    }; 

    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify 
    var jsonStr = JSON.stringify(myJSONObject); 

    // http://www.w3schools.com/jsref/jsref_encodeURI.asp 
    var encodedStr = encodeURIComponent(jsonStr); 

    // and finally send it to flash 
    AirBridge.evoke('parseJson('+ encodedStr +')'); 
} 

然後,接受它在空氣側這樣

private function onReceivedMassage(e:RichWebViewEvent):void 
{ 
    DynamicFunc.run(this, e.param); 
} 

public function parseJson($str:String):void 
{ 
    trace(decodeURIComponent($str)); 
}