Post not yet marked as solved
I have an iframe on Site A with src set to a subdomain on Site B (both https). On Safari the session is not being retained in the iframe. I believe this to be related to first/third party cookies, so I have ensured that the session cookies and any other cookies set have SameSite=None and Secure specified.
I have attempted to integrate the Javascript Storage API, but hasStorageAccess always indicates that the client has storage access, so never calls requestStorageAccess. If I remove the hasStorageAccess check, requestStorageAccess always fails and never asks the user for permission to allow storage.
There are no problems on desktop browsers or Chrome Android, this only occurs on iOS (multiple iOS devices tested). Can anyone please suggest anything else I need to do?
Post not yet marked as solved
What is the recommended FFMPEG settings for encoding a video which can play on all apple devices, old and new.
I would like the format to be in mp4 so that the video file is also compatible to android, windows (phone / pc) and linux.
These are the current settings I have used and they do not work on iOS, These settings work great on Windows and Android but not on iOS.
ffmpeg -i input_video.mp4 -c:v libx264 -crf 23 -profile:v baseline -level 3.0 -pix_fmt yuv420p -c:a aac -ac 2 -b:a 128k -movflags faststart -o output_video.mp4
I'm new to developing for iPhone/iOS.
so thanks in advance.
Post not yet marked as solved
Tagged PDF (also known as PDF/UA), created in 2012, is an ISO standard mandated by EU accessibility directives since 2019, and in other jurisdictions.
As far as I can tell, Apple has no support for this format in any of its products (Notably Safari and Preview, but also the "Save as PDF" feature in Apple's print dialog, and the PDFKit Framework).
This shortcoming makes Apple platforms far less than ideal for customers (and organisations) who seek (or are required to procure) accessible products.
I know that Apple generally does not comment on unreleased products, but Safari and Preview are already released. Any Apple device is therefore non-compliant with an increasingly common legally mandated file format out-of-the-box.
Accessibility consultants can therefore not (in good faith) recommend Apple products to any EU public sector org which relies on documents in PDF/UA format.
How long must we continue to recommend *against* Apple products to customers with disabilities, and the organisations that hope to serve them?
Post not yet marked as solved
Safari Version 14.0.1 (16610.2.11.51.8)
I am porting a Chrome/Firefox/Edge extension to Safari Web Extension. Mostly, the process was painless, I am, however, seeing quite different behavior in the tab ids generated by Safari compared to Chrome, Firefox, and Edge. My extension has callbacks for each of these browser.webNavigation events:
browser.webNavigation.onBeforeNavigate
browser.webNavigation.onCommitted
browser.webNavigation.onDOMContentLoaded
In each of these I rely on the tab id for various future tab targeting operations. When opening a new tab, the details object passed to each of these callbacks has a non-zero tabId on Chrome, Firefox, and Edge. However, in Safari, the tabId is always zero. To debug, I added one more callback:
browser.webNavigation.onCompleted
At this point Safari finally has a non-zero tabId in the details param. Needless to say this is causing some consternation with achieving the same outcomes as tab tracking on Chrome, Firefox, and Edge. It's like Safari is treating new tabs as "non tabs" until navigation completes. You can even see it when trying to get the tab by tabId=0:
browser.tabs.get(tabId) // tabId=0 here
	.then(tab => {
		// tab is undefined
	});
Seems like this might be a bug. I can't imagine why the behavior is so different from other browsers. Any ideas on how to work around?
Post not yet marked as solved
Hi!
What is basic difference between Safari extension which has NSExtensionPointIdentifier set to com.apple.Safari.extension and Safari web extension with NSExtensionPointIdentifier value set to com.apple.Safari.web-extension.
I'm asking because to me it seems that permissions for those two work differently.
When I set same set of permissions to manifest.json of extension I have different behaviour.
Case 1:
For com.apple.Safari.extension when user turns on the extension in Safari preferences, there is a popup with question: Are you sure you want to turn on the extension "extension_name"?. User can either cancel it and not turn on extension, or user can click Turn on and allow all extension requested permissions on all pages.
Case 2:
For com.apple.Safari.web-extension when user turns on the extension in Safari preferences, there is no popup, but there are 2 buttons, Edit websites where user can enable/disable extension separately for each and every website and there is Always allow on Every Website which basically does the same as Turn On in first example. But if user does not accept some webpage, when user gets to that page first time and tries to click on extension icon, there will be popup with warning about permissions and with several options for user to allow or disable extension.
To create extension I used safari-web-extension-converter tool which automatically creates Safari web extension, but problem is our users do not like permission behaviour that happens in Case 2.
Is there a way to have Safari web extensions (com.apple.Safari.web-extension) which has behaviour described in Case 1.
Post not yet marked as solved
I'm trying to use browser.storage.onChanged - https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/storage/onChanged to detect when changes are made to browser.storage.local where I save all the preferences for my Safari Web Extension.
This works on Chrome, Firefox, Edge, and Opera. But I can't get it to work on Safari. When I call browser.storage.local.set, the onChanged listener is not called.
Below is the code I'm using to test this in Safari. This has to be in an extension with the Storage permission. - https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions
Given this works in all other browsers and I'm following the documentation, I'm inclined to believe this is a bug in Safari. Am I missing something?
/* Function to handle changes to storage */
function handleChange(changes) {
	for (var key in changes) {
		var storageChange = changes[key];
		console.log('onChanged triggered. '+
				 'Storage key "%s" changed. ' +
				 'Old value was "%s", new value is "%s".',
				 key,
				 storageChange.oldValue,
				 storageChange.newValue);
	}
}
/* Add listener for storage changing */
browser.storage.onChanged.addListener(handleChange)
/* Confirm that the listener has been attached (expect "true" to be returned)*/
browser.storage.onChanged.hasListener(handleChange)
/* Set value for ['testKey] (should trigger onChanged event which calls handleChange) */
browser.storage.local.set({testKey: true}, () => { console.log('Storage updated'); });
/* Get current value for ['testKey] in storage.local, should return {testKey: true}*/
browser.storage.local.get(['testKey'], (result) => { console.log(result); });
/* Change value for ['testKey] (should trigger onChanged event which calls handleChange) */
browser.storage.local.set({testKey: false}, () => { console.log('Storage updated'); });
Hello!
I have this scrollable container. It works fine across browsers and devices until it hits iOS14. Behaves just the way it should iOS 12 - (cant test iOS13 right now)
The goal is to always show the scrollbar. On iOS14 only the native scrollbar is shown when scrolling is happening.
Is there any way to fix this for iOS14 users?
thanks in advance!
div {	
max-height: 20rem;
	overflow-x: hidden;
	overflow-y: auto;
	margin-right: 0.25rem;
	::-webkit-scrollbar-track {
		border-radius: 0.125rem;
		background-color: lightgray;
	}
	::-webkit-scrollbar {
		width: 0.25rem;
		border-radius: 0.125rem;
	}
	::-webkit-scrollbar-thumb {
		border-radius: 0.125rem;
		background-color: gray;};
	}
}
I am porting my chrome extension to Safari. The extension requires the user to sign-in and I use the OAuth code flow, which requires a redirect url.
In Chrome, I can use chrome.runtime.getURL('/mypage.html') as a redirect url because in chrome the extension id is never changed.
In Safari, however, the extension id keeps changing in every (xcode) build. This is similar to the behaviour of Firefox but in Firefox, I can use browser.identity.getRedirectURL(). Although not reachable, it guarantees to stay the same.
As in Safari, there is NO browser.identity and safari-web-extension:// is blocked by Safari, what url can I use as a redirect URL?
According to https://developer.apple.com/documentation/safariservices/safari_web_extensions/assessing_your_safari_web_extension_s_browser_compatibility, tabs.onUpdated should be fully supported. However, I have noticed that the changeInfo only contains 'status'. This is insufficient because it does not give enough information what has actually changed on a tab.
For example, 'url' is expected to be in the changeInfo if tab's URL has changed. See https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/onUpdated#changeInfo.
Note: already submitted a feedback to Safari via apple standard feedback channel. Don't know what will happen with that as I have never heard anything back from Apple. Coming from Microsoft platform, I find Apple awkwardly unreachable. And they don't provide enough information on their documentation. Do you guys share the same feelings? or it's just me.
Post not yet marked as solved
I'm using Safari 14.0.2.
In the network tab, the Time column is just showing -- and not the time it takes to load the file requested.
If I click on the disable cache button, safari is still loading files from memory instead of requesting from origin.
Whats the issue with Safari, WebGL and JavaScript performance, compared to other browsers Safari its a fullblown disaster. I think a saw a commercial stating Safari is the fastest browser ever ;-) hey, I can tell and show you, its not ;-).
Can someone please explain what the excuse is for this when you have unlimited of money and 10000 programmers;-)?
Post not yet marked as solved
I have an application that implements the universal link. If I put the url in the notes or messenger app and click on it, open my app. (This is expected behavior).
But if I use the safari, putting the url in the browser, does not open my application, opens the website. (Not what I expected)
I did all the AASA validation tests and everything is fine
Post not yet marked as solved
We have an issue to log into website with Face ID using AutoFill feature of Safari on iPhone.
We are Not using the Web Authentication API with FaceID.
Our website has multiple html buttons on sign in page (forgot username, forgot password, sign in).
When Face ID is used to AutoFill username and password and login into the website it uses the forgot username button which leads to forgot username page. So instead of using sign in button it uses forgot username button.
Is there a html property that needs to be set on the sign in button so face id knows it should use that one?
STEPS TO REPRODUCE
Enable iCloud Keychain
Enable AutoFill for your Names and Passwords in Safari settings.
Open Safari and browse to website. Sign in as you normally would by entering your username and password. A message should pop up asking if you would like to save this password in your iCloud Keychain for AutoFill on all your devices. Tap on Save Password.
Sign out of the site
Try to Sign in using FaceID
Using:
IOS 14.4.1
Safari 14
iPhone 12 pro
Post not yet marked as solved
Hi there.
I'm using Unity to develop a WebGL application that has been working for years on Macs. With the new M1 Macs, though, I notice an issue where some of our 3d models flicker specifically on M1 Macs only. Updated Unity versions don't seem to fix anything, and editing the shaders doesn't seem to cause any change either. In the Unity Editor on this computer, everything renders just fine; it's only in an actual build that it's a problem.
Has anyone seen an issue like this, either with Unity or with other WebGL? Does anyone have ideas on things I could try? Could this be a browser issue?
Post not yet marked as solved
After my user shelved Safari for a long time and did not close it (a few days), he was unable to request our webpage. After investigation, it was found that the CDN resource request was not sent out. At the same time, chrome is accessed normally. After restarting Safari browser or dig CDN host, it can be accessed normally.
I suspect that it is a cache bug of safari 13. It seems that some cache headers of CDN can trigger this bug, resulting in the failure to request resources normally
Reproduce Safari version: 13.0.3, 13.0.5, 13.1.3.
Since upgrading to Big Sur, sending AppleScript "do JavaScript" command to Safari runs extremely slowly.
For example:
tell application "Safari"
set rslts to do JavaScript "document.title;" in document 1
end tell
... this used to take a split second in prior versions of the MacOS. Since upgrading to Big Sur, running this script results in a spinning pinwheel, the Safari's CPU usage ramps up to 100% and the command takes about 10 seconds to complete.
Post not yet marked as solved
We are currently experiencing a usability issue in our App. We also discovered this issue for sites in Safari as well.
While using Voiceover in iOS 13.3+, we've discovered that VO skips all tables that are using a caption. This occurs when a user swipes to read the contents of the page. We also observed that using the "rotor" and choosing tables, it will not recognize that there is a table on the page.
This has been repeated by multiple users on different devices. Our testing also encompassed VO on macOS Catalina and VO worked as expected for all tables we tested.
Has anyone else come across this issue?
Post not yet marked as solved
It seems to be a question that comes up often in different ways, but despite several hours of research I still haven't found a solution.
I currently face an issue in Safari 14 on MacOS BigSur where cookies are never sent by Safari on XmlHttpRequests to an api on the same root domain.
Indeed, i'm working on an Angular SPA where the client app is locally hosted at https://myapp.local and for tests purpose I have an api running locally on https://api.myapp.local.
For some requests, we need to attach 2 cookies that are originally set by the API. I am able to see the said cookies in the API responses and in the "storage" section of Safari's DevTools, however they are never sent back to the server for subsequent XHR requests. (XHR with credentials)
I did try different cookie's attributes but none of my tries were successful :
sameSite=None, domain=myapp.local, Secure, httpOnly
sameSite=Lax, domain=myapp.local, Secure, httpOnly
The only way I found to get around the problem was to disable the "prevent cross-site tracking" option in Safari's privacy settings (which is not a proper solution for our users since this option is enabled by default...)
Nevertheless, I don't understand why Safari consider those cookies as 3rd party cookies (and blocks them) since the API is hosted on the same domain (on a subdomain to be more accurate) than the client web app. And, if I understood correctly, cookies should be sent by browsers for subdomains requests, both with sameSite=Lax and sameSite=None. Especially since it works perfectly on Firefox and Chromium browsers.
Anyway, if anyone has an idea or a solution I would be very interested to hear it because I don't know what to try anymore!
Thanks a lot !
Post not yet marked as solved
I currently have an architecture where I need to forward messages from the Safari Web Extension to another app through the App Extension.
I understand from the docs on Apple, App Extensions are not meant to be used as a long running background task, but if it is just proxying messages, is it advisable to keep pinging the app extension to keep it alive and use it as a long running task in the background for proxying messages ?
Post not yet marked as solved
Hi
For some time I'm facing an issue with Safari browser. For every page in my domain Safari sends wrong user agent. It introduces itself as a version 12 even though in reality it is version 14 from BigSur. In the result every external service which relies on a browser version is broken (such as analytics or ad campaigns). Clicking in development tab a "Disable Site-specific hacks" option fixes the issue and the user agent header becomes proper. With the option disabled it looks like: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1.2 Safari/605.1.15
According to documentation Safari tries to fix issues with my page but enabling or disabling the site-specific hacks option doesn't change the output in a browser console so I don't know what exactly is wrong with my page.
I got two questions:
Is it possible to disable "site-specific hacks" functionality using http headers, meta tags or any other site development technique rather than clicking in dev tools?
Who decides and where to get information why our page was marked as broken and what actions we have to initiate to remove our page from "site-specific hacks"