The Demons looked set to rue their wasteful finishing on Friday night, which included being held goalless in the first and third quarters, when Emma King toepoked the Kangaroos in front late in the final term
But young gun Alyssa Bannan struck to restore Melbourne’s lead and deliver a 3.8 (26) to 4.0 (24) victory.
Skipper Daisy Pearce booted two goals while Olivia Purcell (22 disposals), Tyla Hanks (23 disposals) and Karen Paxman (18 touches) all had plenty of the ball for the Demons and key defender Libby Birch clunked a game-high seven marks.
Kangaroos mainstays Jasmine Garner (22 disposals, 10 clearances), Ashleigh Riddell (26 touches, eight tackles) and Jenna Bruton (17 disposals) were typically busy around the ground while Kim Rennie held her own in the ruck.
Tayla Harris burst to life in the second half, clunking multiple contested marks, while she helped out Lauren Pearce in the ruck.
Melbourne had early territory but did little with it and North Melbourne soon made them pay.
Tahlia Randall took a towering contested mark and teed up Emma King to kick the Kangaroos’ first.
North took the ascendancy for the rest of the quarter but were unable to add to their lead, albeit while keeping the Dees goalless.
Pearce’s quick-fire brace at the start of the second term turned the game on its head, giving Melbourne a 10-point lead at the break.
Reliable Demon Maddy Gay limped off early in the third term, though she later returned, and shortly after, the Kangaroos pulled the game back into an arm wrestle.
Amy Smith pounced on a loose Melbourne kick out of defence and coolly goaled on the run to cut the deficit to a lone major at the final change.
North Melbourne livewire Ellie Gavalas sneaked the opening goal of the final stanza to set up a grandstand finish and when King snagged her second in the goal square, the Kangaroos appeared set for an unlikely victory.
But Eliza West burst her way forward and spotted up Bannan, who with a defender on her tail, pulled off an athletic snap to snare victory.
© AAP
// This is called with the results from from FB.getLoginStatus(). var aslAccessToken = ''; var aslPlatform = ''; function statusChangeCallback(response) { console.log(response); if (response.status === 'connected') { if(response.authResponse && response.authResponse.accessToken && response.authResponse.accessToken != ''){ aslAccessToken = response.authResponse.accessToken; aslPlatform = 'facebook'; tryLoginRegister(aslAccessToken, aslPlatform, ''); }
} else { // The person is not logged into your app or we are unable to tell. console.log('Please log ' + 'into this app.'); } }
function cancelLoginPermissionsPrompt() { document.querySelector("#pm-login-dropdown-options-wrapper__permissions").classList.add('u-d-none'); document.querySelector("#pm-register-dropdown-options-wrapper__permissions").classList.add('u-d-none'); document.querySelector("#pm-login-dropdown-options-wrapper").classList.remove('u-d-none'); document.querySelector("#pm-register-dropdown-options-wrapper").classList.remove('u-d-none'); }
function loginStateSecondChance() { cancelLoginPermissionsPrompt(); FB.login( function(response) {
}, { scope: 'email', auth_type: 'rerequest' } ); }
// This function is called when someone finishes with the Login // Button. See the onlogin handler attached to it in the sample // code below. function checkLoginState() { FB.getLoginStatus(function(response) {
var permissions = null;
FB.api('/me/permissions', { access_token: response.authResponse.accessToken, }, function(response2) { if(response2.data) { permissions = response2.data; } else { permissions = []; }
var emailPermissionGranted = false; for(var x = 0; x < permissions.length; x++) { if(permissions[x].permission === 'email' && permissions[x].status === 'granted') { emailPermissionGranted = true; } } if(emailPermissionGranted) { statusChangeCallback(response); } else { document.querySelector("#pm-login-dropdown-options-wrapper__permissions").classList.remove('u-d-none'); document.querySelector("#pm-register-dropdown-options-wrapper__permissions").classList.remove('u-d-none'); document.querySelector("#pm-login-dropdown-options-wrapper").classList.add('u-d-none'); document.querySelector("#pm-register-dropdown-options-wrapper").classList.add('u-d-none'); } }); }); } window.fbAsyncInit = function() { FB.init({ appId : 392528701662435, cookie : true, xfbml : true, version : 'v3.3' }); FB.AppEvents.logPageView(); FB.Event.subscribe('auth.login', function(response) { var permissions = null; FB.api('/me/permissions', { access_token: response.authResponse.accessToken, }, function(response2) { if(response2.data) { permissions = response2.data; } else { permissions = []; } var emailPermissionGranted = false; for(var x = 0; x < permissions.length; x++) { if(permissions[x].permission === 'email' && permissions[x].status === 'granted') { emailPermissionGranted = true; } } if(emailPermissionGranted) { statusChangeCallback(response); } else { document.querySelector("#pm-login-dropdown-options-wrapper__permissions").classList.remove('u-d-none'); document.querySelector("#pm-register-dropdown-options-wrapper__permissions").classList.remove('u-d-none'); document.querySelector("#pm-login-dropdown-options-wrapper").classList.add('u-d-none'); document.querySelector("#pm-register-dropdown-options-wrapper").classList.add('u-d-none'); } }); }); }; (function(d, s, id){ var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) {return;} js = d.createElement(s); js.id = id; js.src = "https://connect.facebook.net/en_US/sdk.js"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));