2016-04-24 26 views
-1

いつも変数がデフォルト値に戻るため、私はそれをどうやって行うのだろうかと思います。それはIbeaconのアプリケーションです、私は私のアプリについての詳細を表示する必要があるかどうかわかりません。私はちょうど一度何か関数を呼びたい、誰も私を助けることができますか?ただ1回条件付きで実行する方法

function uint8ArrToHexStringNoSpace(arr) { 
 
\t return Array.prototype.map.call(arr, function(n) { 
 
\t \t var s = n.toString(16); 
 
\t \t if(s.length == 1) { 
 
\t \t \t s = '0'+s; 
 
\t \t } 
 
\t \t return s; 
 
\t }).join(''); 
 
} 
 

 
var quit; 
 
function something() { 
 
    if(quit) { 
 
     window.open("info.html"); 
 
    } 
 
    quit = true; 
 
} 
 

 

 

 
function appendTd(root, value, id) { 
 
\t var text = document.createTextNode(value); 
 
\t var td = document.createElement("p"); 
 
\t if(id) { 
 
\t \t td.id = id; 
 
\t } 
 
\t td.appendChild(text); 
 
\t root.appendChild(td); 
 
} 
 

 
function hex16(i) { 
 
\t var s = i.toString(16); 
 
\t while(s.length < 4) { 
 
\t \t s = '0'+s; 
 
\t } 
 
\t return s; 
 
} 
 

 

 

 
var beacons = {}; 
 

 
var app = { 
 
\t 
 
\t initialize: function() { 
 
\t \t // Important to stop scanning when page reloads/closes! 
 
\t \t window.addEventListener('beforeunload', function(e) 
 
\t \t { 
 
\t \t \t iBeacon.stopScan(); 
 
\t \t }); 
 

 
\t \t this.bindEvents(); 
 
\t \t 
 
\t }, 
 
\t bindEvents: function() { 
 
\t \t document.addEventListener('deviceready', this.onDeviceReady, false); 
 
\t }, 
 
\t onDeviceReady: function() { 
 
\t \t //app.receivedEvent('deviceready'); 
 
\t \t app.startScan(); 
 
\t }, 
 
\t receivedEvent: function(id) { 
 
\t \t var parentElement = document.getElementById(id); 
 
\t \t var listeningElement = parentElement.querySelector('.listening'); 
 
\t \t var receivedElement = parentElement.querySelector('.received'); 
 

 
\t \t listeningElement.setAttribute('style', 'display:none;'); 
 
\t \t receivedElement.setAttribute('style', 'display:block;'); 
 

 
\t \t console.log('Received Event: ' + id); 
 
\t }, 
 

 

 
\t 
 
\t startScan: function() { 
 
\t \t 
 
\t \t 
 
\t \t iBeacon.startScan({}, function(beacon) { 
 
\t \t \t //console.log("beacon found: "+beacon.address+" "+beacon.name+" "+beacon.rssi+"/"+beacon.txPower); 
 
\t \t \t var r = beacon.region; 
 
\t \t \t //console.log("M"+r.major.toString(16)+" m"+r.minor.toString(16)+" uuid "+uint8ArrToHexStringNoSpace(r.uuid)); 
 
\t \t \t var key = 'tx'+beacon.address.replace(/:/g,'_'); 
 
\t \t \t //console.log('key: '+key); 
 
\t \t \t 
 
\t \t \t 
 
\t \t \t 
 
\t \t \t 
 
\t \t \t if(beacons[key] == null) { 
 
\t \t \t \t beacons[key] = beacon; 
 
\t \t \t \t 
 
\t \t \t \t 
 
\t \t \t \t var root = document.getElementById("beaconListRoot"); 
 
\t \t \t \t var tr = document.createElement("tr"); 
 
\t \t \t \t var br = document.createElement("br"); 
 
\t \t \t \t 
 
\t \t \t \t // <tr><td>Address</td><td>Name</td><td>RSSI</td><td>ID</td><td>UUID</td></tr> 
 
\t \t \t \t var adress = ' Adress: '; 
 
\t \t \t \t var name = ' Name: '; 
 
\t \t \t \t var distance = ' distance: '; 
 
\t \t \t \t var major = ' Major: '; 
 
\t \t \t \t var minor = 'Minor: '; 
 
\t \t \t \t var UUID = ' UUID: '; 
 
\t \t \t \t 
 
\t \t \t \t appendTd(tr, adress + beacon.address + name + beacon.name); 
 
\t \t \t \t appendTd(tr, distance + beacon.rssi+" /"+beacon.txPower+"\u00A0"+beacon.estimatedDistance.toFixed(2)+'m', key); 
 
\t \t \t \t appendTd(tr, major + hex16(r.major)+"\u00A0"+ minor +hex16(r.minor)); 
 
\t \t \t \t appendTd(tr, UUID + uint8ArrToHexStringNoSpace(r.uuid)); 
 
\t \t \t \t root.appendChild(tr); 
 
\t \t \t \t 
 
\t \t \t \t 
 
\t \t \t } else { 
 
\t \t \t \t var td = document.getElementById(key); 
 
\t \t \t \t td.firstChild.nodeValue = 'Power: ' + beacon.rssi+"/"+beacon.txPower+ ' Distance: ' + "\u00A0"+beacon.estimatedDistance.toFixed(2)+'m'; 
 
\t \t \t 
 
\t \t \t } 
 
\t \t \t 
 
\t \t \t if(beacon.address == '78:A5:04:13:3B:17' && beacon.estimatedDistance.toFixed(2) <= 10){ 
 
\t \t \t \t something(); 
 
\t \t \t } 
 
\t \t \t 
 
\t \t \t 
 
\t \t }, function(error) { 
 
\t \t \t console.log("startScan error: " + error); 
 
\t \t }); 
 
\t }, 
 
};

+0

sessionStorageを使用するwhantも...? –

+0

これはフレームワーク固有の可能性があると考えられます。あなたは一度だけ実行したい条件を教えていただけますか?それ以外の場合は、邪魔にならないほどの威力を発揮します。 –

+0

これはちょうどJavascriptに関連していますか?どのプログラミング言語でも、actionPerformed = falseという変数で状態を取得します。これはfalseに初期化されます。一度クリックするとtrueに設定されます。一度真実であれば、何もしないでください。 – randominstanceOfLivingThing

答えて

2

使用localStorageは:

https://developer.mozilla.org/en/docs/Web/API/Window/localStorage

localStorage(およびsessionStorage)あなたが永続的な値あなたはsomething()を呼び出して

function something() { 
    localStorage.setItem("somethingCalled", "yes"); 
    if(quit) { 
     window.open("info.html"); 
    } 
    quit = true; 
} 

を維持しましょう

if (localStorage.getItem("somethingCalled")!="yes") { 
    something() 
} 

あなたは、もう少し具体的な問題がどこにあるのコードスニペットでのようだろ代わりlocalStoragehttps://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage

+0

は私のためには機能しませんでした。 – Sobucki

+0

ibeaconアプリケーションの何もlocalStorageに対するものではありません。あなたのプラットフォームに関する詳細を教えてください。 – Giuseppe

関連する問題