How to use AdSense on an AJAX based site the right way? - html

I am currently finishing my web application which will be a soccer/sports data related dashboard. The URL won‘t change whenever a user clicks on a different team in the sidebar to fetch the according data from an API via AJAX.
I would like to implement a Google AdSense skyscraper which refreshes on a user click within the sidebar (so basically the same dashboard and URL, but new data, each click on a team in the sidebar = new AJAX data = new impression?). So the event to refresh the AdSense banner would be the user interaction and not an autorefresh.
Would that be in the terms of AdSense and a proper way to implement it into my web application?
Thank you.

Yes, that is the prescribed way. The AdSense API has a refresh method you can call.
I would also recommend setting some sort of throttle on this so that if the user is constantly clicking around on different content, that you're not refreshing that ad too quickly.

Related

How track data with Angular and Google Analytic?

I work on a one single page application (360 virtual visit) with Angular 11. I would like to track user events and especially on buttons.
I started to put the Global site tag in my Index.html file like this: Global Site tag in Index.html
On google analytic, I receive connection data user First Data User
But I have no idea how I can track bouton click with Angular.
Does anyone have an idea that works today ?
do not hesitate to ask me questions for more information. :D
Thank you in advance for your answers. I would share my progress.
For something like Button Clicks, you have to configure custom events in Google Analytics and push that custom event whenever user clicks the button.
You can create onButtonClick() function and call it when user clicks the button. In the function, you should push event to the window.dataLayer:
onButtonClick() {
window.dataLayer.push({
event: 'button_click',
data: {
user: this.current_user._id,
... // Send some custom data that you want to track
}
})
}
You should be careful with SPA when you install gtag the way it is described into docs as it will track page views incorrect. In SPA browser loads the page only once, and all other actions will rerender the content but it still will not be counted as a views.
Instead you will need to set up router events. Here is a great tutorial for that. It also will explain how to set up other events like button clicks.
By the way in the example above they suggest to send user id with event. Instead of it you may send it with config only once, and it will be automatically added to any your event:
gtag('config', 'GA-ID', {
page_path: event.urlAfterRedirects,
user_id: this.user.id
});
You need to configure the Google tag manager to send events to Google Analytics. I've written a post about it: https://pieterjandeclippel.medium.com/angular-or-react-or-whatever-and-google-analytics-97342c909e61
Now it seems that Universal analytics will be on its way out, so you might want to try GA4 instead.
But I haven't tried with that one yet, since my own website has been configured to use UA.
We've added the same feature recently and this guide here, albeit a bit dated, explains it quite well.
It boils down to you using a dedicated GoogleAnalyticsService that enables you track specific events (ie. button clicks, scroll events, etc).

Is there a certain page I should be fetching my API data from within my Chrome Extension Project?

I am making a chrome extension that fetched JSON data from CoinMarketCap.com API and currently I have it running in the background script. I'm not 100% sure what the purpose of the page is really. I was wondering if I could simply fetch the data from the popup script after I click a button within my popup?
Each button represents a different coin. I basically want to get the price of a chosen coin and display it on whatever page the user is on when they double click the coin in a text article. Eventually I want to make it so you can double click any coin and have it show a live price conversion while you're on the web-page.
The point of a background page is to be always available (running if persistent: true, woken up / recreated for registered events if persistent: false).
A popup's lifetime is determined by its visibility. The moment the user clicks away and closes it, the page is closed (as if the tab with it was closed), so it can no longer process any events and its state is lost.
As long as:
The data you need fetched is to be received/processed while the popup is open
Any state you need to persist between popups being shown can be stored in chrome.storage
Then you don't need the background page to do the fetching. Popup page has the same level of access to Chrome APIs.
However, consider this scenario: suppose you want the data to be ready as soon as popup is opened (at least, you want it to be fresher than "since last time"). You may want to do periodic updates even while the popup is closed to refresh the data. You can only do that reliably with a background page (and, say, chrome.alarms API). Then you can cache the latest available data in chrome.storage and use that in the popup.
Background pages have their uses as some code that can run periodically regardless of user actions, and to be able to always react to events.
According to Changes to Cross-Origin Requests in Chrome Extension Content Scripts now you have to do your fetches in Background Script. Not in Content Script.

HTML5 Banner using Google Web Designer

I have create a html5 banner using Google Web Designer following pretty much all the guidelines (https://support.google.com/webdesigner/answer/3261498?hl=en&ref_topic=3261495&rd=1).
I published it locally and uploaded to google adwords campaign as an Image add. In my banner there is a simple form for the user to enter basic details and submit it. So i have just one event on submit button. All good so far. After i uploaded the banner to google adwords, when i tested the banner the whole banner is clickable for some reason. Somehow google is appending a click event on the whole banner.
But according to docs (https://support.google.com/adwordspolicy/answer/176108?hl=en)
"HTML5 ads that are not created in Google Web Designer are, by
default, clickable on the entire area of the ad."
I used google web designer for this specific reason still i see the entire area clickable. Any ideas or suggestions or references would be great.
Thanks.
In Code view, add a higher z-index to the submit button so that it sits above the exit element.
I published it locally and uploaded to google adwords campaign as an Image add.
I think you should try to find a way to not upload as an Image Ad.
Google Adwords requires an exit/destination URL when you upload an ad on their platform disregarding what type of ad you upload.
That URL is assigned to your whole ad.
What you need is DoubleClick account. DoubleClick for advertisers will allow you specific button exits/destination URLs.

Populating Request on Back Button Click

So I am running into an issue. I have certain fields that I store within the request from page to page, because each page requires different fields to be populated within a collector that I used cross-page. The problem is the back button.
If I click the link to take my to my login page, the server populates the collector from the request with the appropriate pagename and event name, etc., to allow me to navigate to the login page. (Certain things have to load, so it has to go through a servlet). However, on that page, there are static modules for ads and whatnot, so clicking on one of the ads will take you to a separate, static page that does not require these attributes to access. In Chrome, Safari and FF, if I click the back button after accessing this static page, the browser asks me to reload the request to be able to view the page. In IE8, however, there is no page reload. It just kicks me back to the page, and does not populate the request, and it crashes with my sorry page.
I need to know if there is a way to populate the request on the back button click, and how to do so. Otherwise, my servlet is throwing a null pointer when trying to access the fields because they are all null in the request. Any help would be greatly appreciated. I am not even sure if this is at all possible.
I guess you are using POST requests to navigate to each page. POST should be used only to send some user action different from page view - login, buying something, changing settings, etc. The browsers require the user to confirm that they want to revisit a page using POST, before that implies state change. See What is the difference between POST and GET?
For simple content pages, where the user does not take action, it's better to use GET requests. Also, it is much more common to use request.getSession() to get and store the user fields on the server side. That is, you only send them once, and then look them up for each request. Look up for tutorials on session tracking in java.

Open Adsense Ads On Page Load

i have a website that has adsense ads embedded in the right sidebar area. the site basically contains multiple posts. I want the ads to launch whenever a post is viewed, i.e., when a user clicks on a link to view the post, it should launch the ad as well..
adsense provides a javascript that, i think, wouldn't suffice. please suggest a workaround..
You cannot automatically click Google Adsense ads. This is called click fraud and Google will detect it and ban you (and keep any money you've earned).