09-29-2020 03:38
09-29-2020 03:38
Hi guys,
I am trying to change views in the new SDK 5.0 using pointer-events when I tap the screen.
I have 2 views:
1. index.view
2. custom1.view
I get the error 'Cannot set property 'onclick' of null'.
My code is as follows:
My index.view is:
<!-- index.view -->
<svg>
<rect id="background0" height="100%" width="100%" pointer-events="visible" class="background" />
<text id="screen1Text" x="50%" y="80%" pointer-events="visible">This is screen1</text>
</svg>
The custom view is:
<!-- custom1.view -->
<svg>
<animate attributeName="x" from="100%" to="0" begin="load" dur="0.5" easing="ease-in-out" />
<svg>
<rect id="background1" height = "100%" width="100%" pointer-events="visible" />
<!-- your content goes here -->
<text id="screen2Text" x="50%" y="80%" pointer-events="visible">This is screen2</text>
</svg>
</svg>
And the index.js is:
var flag = 1;
const background0 = document.getElementById("background0");
const background1 = document.getElementById("background1");
/* Update - screen*/
function updateScreen(){
console.log(`The flag is ${flag}` )
if(flag == 1){
console.log("I am in index.view, moving to custom.view")
flag = 2;
console.log(`The flag is ${flag}` );
document.location.assign('custom1.view');
}
else{
console.log("I am in custom.view, moving to index.view")
flag = 1;
console.log(`The flag is ${flag}` )
document.location.assign('index.view');
}
}
background0.onclick = function() {
updateScreen();
}
background1.onclick = function() {
updateScreen();
}
09-30-2020 01:43
Fitbit Developers oversee the SDK and API forums. We're here to answer questions about Fitbit developer tools, assist with projects, and make sure your voice is heard by the development team.
09-30-2020 01:43
You didn't mention which click is failing, so I assume it's background1.
Try adding the `click` event after the view is loaded.
document.location.assign('custom1.view').then(() => {
background1.addEventListener("click", () => {
console.log("background1 click");
});
});
Best Answer09-30-2020 02:37
09-30-2020 02:37
Hi Jon,
Yes it is background1 (from custom1.view) that does not click. That is helpful!
I modified what you suggested and called the getElementByID and then the onclick function, and it seems to be working as per the below. It looks like I also have to do the same thing to return to the initial screen 'index.view.'
Thanks.
Assign custom1.view
document.location.assign('custom1.view').then(() => {
const background1 = document.getElementById("background1"); background1.onclick = function() { updateScreen(); }
});
Assign index.view
document.location.assign('index.view').then(() => {
const background0 = document.getElementById("background0"); background0.onclick = function() { updateScreen(); }
});
Best Answer