Giter Site home page Giter Site logo

Comments (3)

Aaronius avatar Aaronius commented on May 18, 2024

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.

OverZealous avatar OverZealous commented on May 18, 2024

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, Errors, 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.

Aaronius avatar Aaronius commented on May 18, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.