Comments (3)
Thanks for logging the issue @OverZealous. I think I prefer the current behavior of an error being thrown, so that it's more obvious to the developer that they can't send a function to/from the iframe. I do think I need to be more explicit about this nuance in the Penpal documentation though.
FWIW, I think you can change your function to this:
export function toSafeObject(data) {
return JSON.parse(JSON.stringify(data));
}
The native JSON serialization process automatically strips functions. I'm going to close this issue, but feel free to continue to comment or add questions.
from penpal.
I understand. I wish the browser-generated console error was better—it's not very clear what's triggering it.
One reason it would be nice to automatically handle this is you don't have to wrap methods or results from methods that might be shared within the parent or child application. This is useful for triggering actions that can be called on either side by simply sharing the same method.
I did look at the stringify method before, but I believe it strips out values that are valid to send across postMessage
. I think you can serialize several data types that aren't supported within JSON, such as NaN
, Infinity
, Symbol
, Error
s, and the various *Array objects like Int8Array
. Though admittedly, my method isn't that robust against the arrays and friends.
I agree It's not critical enough to add to the library. However, would it make sense to add serialize
& deserialize
options to the library? This would allow the user to clean up any data in a concise manner.
from penpal.
Thanks for pointing that out. Let me keep this in mind. If it comes up again, it might be worth adding serialize
and deserialize
options. Thanks again.
from penpal.
Related Issues (20)
- Compatibility v4-v5 HOT 2
- Latest chrome update breaks the penpal HOT 2
- TypeScript imports with Penpal 5.2.0 HOT 6
- Provide typing for Connection HOT 1
- How to detect if connection with child was lost? HOT 11
- Option to skip iframe validation? HOT 6
- Remove check that determines if `connectToParent` is running inside iframe HOT 1
- Iframe Removal Monitoring not Working with Custom Elements HOT 7
- Export types HOT 6
- Types for the response of Promise returned after connection established HOT 2
- dynamic iframe url HOT 3
- Make parentOrigin on connectToParent required
- Including penpal in babel producing errors HOT 1
- Examples for using with React Hooks HOT 4
- error "Cannot read properties of null (reading 'postMessage')" HOT 9
- Question: Why does penpal use Window#postMessage instead of MessageChannel? HOT 2
- connected fail HOT 2
- [Penpal] Parent: Awaiting handshake
- Feature request: allow subdomains of childOrigin HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from penpal.