Client-side validation for page_url and DOM abstraction

Client-side for #22 and progress on #52